C#获取主机信息
获取主机信息
最近需要做一个配合集控系统收集各个终端设备的一些信息,大致需要收集终端设备的硬件信息,CPU、内存以及硬盘使用率等信息。网上查看了一番,使用WMI来获取这些信息是最方便的。实现代码如下:
Models.PlatformInfo platformInfo = new Models.PlatformInfo();
string query = "Select * from {0}";
///获取操作系统数据
SelectQuery queryOS = new SelectQuery(string.Format(query, WindowAPIType.Win32_OperatingSystem));
ManagementObjectSearcher searcher = new ManagementObjectSearcher(queryOS);
foreach (ManagementBaseObject os in searcher.Get())
{
platformInfo.Version = Convert.ToString(os["Version"]);
platformInfo.Caption = Convert.ToString(os["Caption"]);
platformInfo.SerialNumber = Convert.ToString(os["SerialNumber"]);
platformInfo.SystemDirectory = Convert.ToString(os["SystemDirectory"]);
platformInfo.OSArchitecture = Convert.ToString(os["OSArchitecture"]);
platformInfo.InstallDate = Convert.ToString(os["InstallDate"]);
platformInfo.Organization = Convert.ToString(os["Organization"]);
}
其中可以使用os.GetText(TextFormat.Mof);来获取详细的信息。
目前我查到的可以获取的API接口有如下:
/// <summary>
/// Window Api名称
/// </summary>
public enum WindowAPIType
{
/// <summary>
/// 内存
/// </summary>
Win32_PhysicalMemory,
/// <summary>
/// CPU
/// </summary>
Win32_Processor,
/// <summary>
/// 硬盘
/// </summary>
Win32_DiskDrive,
/// <summary>
/// 电脑型号
/// </summary>
Win32_ComputerSystemProduct,
/// <summary>
/// 分辨率
/// </summary>
Win32_DesktopMonitor,
/// <summary>
/// 显卡细节
/// </summary>
Win32_VideoController,
/// <summary>
/// 操作系统
/// </summary>
Win32_OperatingSystem,
/// <summary>
/// 网络适配器
/// </summary>
Win32_NetworkAdapter,
/// <summary>
/// 网络适配器设置
/// </summary>
Win32_NetworkAdapterConfiguration,
/// <summary>
/// 操作系统登录
/// </summary>
Win32_ComputerSystem,
/// <summary>
/// 键盘
/// </summary>
Win32_Keyboard,
/// <summary>
/// 点输入设备,包括鼠标
/// </summary>
Win32_PointingDevice,
/// <summary>
/// 主板
/// </summary>
Win32_BaseBoard,
/// <summary>
/// BIOS芯片
/// </summary>
Win32_BIOS,
/// <summary>
/// 光盘驱动盘
/// </summary>
Win32_CDROMDrive,
/// <summary>
/// 并口
/// </summary>
Win32_ParallelPort,
/// <summary>
/// 串口
/// </summary>
Win32_SerialPort,
/// <summary>
/// 串口配置
/// </summary>
Win32_SerialPortConfiguration,
/// <summary>
/// 多媒体,一般指声卡
/// </summary>
Win32_SoundDevice,
/// <summary>
/// 主板插槽(ISA&PCI&AGP)
/// </summary>
Win32_SystemSlot,
/// <summary>
/// USB控制器
/// </summary>
Win32_USBController,
/// <summary>
/// 打印机
/// </summary>
Win32_Printer,
/// <summary>
/// 打印机设置
/// </summary>
Win32_PrinterConfiguration,
/// <summary>
/// 打印机任务
/// </summary>
Win32_PrintJob,
/// <summary>
/// 打印机端口
/// </summary>
Win32_TCPIPPrinterPort,
/// <summary>
/// Modem
/// </summary>
Win32_POTSModem,
/// <summary>
/// MODEM端口
/// </summary>
Win32_POTSModemToSerialPort,
/// <summary>
/// 显卡
/// </summary>
Win32_DisplayConfiguration,
/// <summary>
/// 显卡设置
/// </summary>
Win32_DisplayControllerConfiguration,
/// <summary>
/// 显示支持显示模式
/// </summary>
Win32_VideoSettings,
/// <summary>
/// 时区
/// </summary>
Win32_TimeZone,
/// <summary>
/// 驱动程序
/// </summary>
Win32_SystemDriver,
/// <summary>
/// 磁盘分区
/// </summary>
Win32_DiskPartition,
/// <summary>
/// 逻辑磁盘
/// </summary>
Win32_LogicalDisk,
/// <summary>
/// 逻辑磁盘所在分区及始末位置
/// </summary>
Win32_LogicalDiskToPartition,
/// <summary>
/// 逻辑内存配置
/// </summary>
Win32_LogicalMemoryConfiguration,
/// <summary>
/// 系统页文件信息
/// </summary>
Win32_PageFile,
/// <summary>
/// 页文件设置
/// </summary>
Win32_PageFileSetting,
/// <summary>
/// 系统启动配置
/// </summary>
Win32_BootConfiguration,
/// <summary>
/// 系统自动启动程序
/// </summary>
Win32_StartupCommand,
/// <summary>
/// 系统安装的服务
/// </summary>
Win32_Service,
/// <summary>
/// 系统管理组
/// </summary>
Win32_Group,
/// <summary>
/// 系统组账号
/// </summary>
Win32_GroupUser,
/// <summary>
/// 用户账户
/// </summary>
Win32_UserAccount,
/// <summary>
/// 系统进程
/// </summary>
Win32_Process,
/// <summary>
/// 系统线程
/// </summary>
Win32_Thread,
/// <summary>
/// 共享
/// </summary>
Win32_Share,
/// <summary>
/// 已安装的网络客户端
/// </summary>
Win32_NetworkClient,
/// <summary>
/// 已安装的网络协议
/// </summary>
Win32_NetworkProtocol,
}
查询都是一致的:"Select * from {0}"
这样就能获取到想要获取到的信息了。
获取开机时间:
/// <summary>
/// 获取开机运行时间
/// </summary>
/// <returns></returns>
public string GetRunTime()
{
TimeSpan ts = TimeSpan.FromMilliseconds(Environment.TickCount);
return ts.ToString();
}
获取CPU使用率可以使用性能计数器组件。
private PerformanceCounter performance = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
this.performance.MachineName = ".";
this.performance.NextValue();
/// <summary>
/// CPU使用率
/// </summary>
/// <returns></returns>
public string GetCPU()
{
return this.performance.NextValue().ToString("F1") + "%";
}
C#获取主机信息的更多相关文章
- Linux 网络编程基础(2)-- 获取主机信息
前一篇已经介绍了最基本的网络数据结构.这篇介绍一下获取主机信息的函数 举个例子,想要通过代码的方式从百度获取当前的时间,怎么做?我们不知道百度的IP地址啊,这代码怎么写?还好,Linux提供了一些AP ...
- PHP通过ZABBIX API获取主机信息 VS 直接从数据库获取主机信息
最近项目需要获取linux主机的一些信息,如CPU使用率,内存使用情况等.由于我们本身就装了zabbix系统,所以我只用知道如何获取信息即可,总结有两种方法可以获取. 一.通过ZABBIX API获取 ...
- 获取主机信息,网络信息AIP,getsockname,getpeername,getservbyname,getservbyport,inet_ntop,inet_pton
获取主机信息 1.ip地址转换,主机字节序 <---> 网络字节序 #include <arpa/inet.h> int inet_pton(int af, const cha ...
- 【Java实用工具】——使用oshi获取主机信息
最近在筹划做一个监控系统.其中就要获取主机信息,其中遇到一些问题.在此做个记录,以便以后查阅. 在该监控系统中,想要做到主机的CPU.内存.磁盘.网络.线程.JVM内存.JVM GC 等维度的监控,J ...
- paramiko获取主机信息
import re import paramiko host="192.168.4.88" user = "root" password = " cl ...
- python 调用zabbix api实现查询主机信息,输出所有主机ip
之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...
- 02.将SDK获取到的ECS主机信息入库
1.通过调用阿里SDK,将获取到的ECS信息存入数据库,如果不知道SDK怎么使用,查看:01.阿里云SDK调用,获取ESC主机详细信息 2.import aliSDK应用的是01.阿里云SDK调用,获 ...
- 使用gethostname()函数和gethostbyname()函数获取主机相关信息
gethostname() : 返回本地主机的标准主机名. 原型如下: #include <unistd.h> int gethostname(char *name, size_t len ...
- 主机性能监控之wmi 获取磁盘信息
标 题: 主机性能监控之wmi 获取磁盘信息作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990541.html 欢迎转帖 请保持文本完整并注明出处 仅 ...
随机推荐
- STCubeMX软件新建Keil和IAR工程使用步骤:
STCubeMX软件新建Keil和IAR工程使用步骤:首先是软件下载(也可在我们的百度云下载):1.STCubeMX下载地址: http://www.stmicroelectronics.co ...
- Oracle根据连续性日期的重复数据取最大或最小值日期
原始数据: 结果数据: 对比两个图,要是不处理连续性中的重复值,我们直接可以用LEAD函数了事,但处理出来的结果貌似多余. 我的思路是先将原始数据中连续性日期有重复值的处理好,即选择最小的一个,比如2 ...
- kali VMWOOLS的安装
别人的教程 https://jingyan.baidu.com/article/3ea51489992f1f52e71bba45.html
- input(移动端iOS)输入内容时调用软件盘后页面底部留白问题
iOS/input输入框调用软键盘底部留白 只需input输入框失去焦点时,让页面自动下移即可恢复 <input placeholder="请输入用户名" v-model=& ...
- 一款兼容性较强的H5播放器-Mediaelementjs
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- TCP层bind系统调用的实现分析
说明:该文章中部分代码未能完全理解透彻,可能对您造成误解,请慎读: 并建议您先阅读本博另外一篇文章:<Linux TCP套接字选项 之 SO_REUSEADDR && SO_RE ...
- Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1099 bytes) in
解释是可用内存已耗尽,这关系到PHP的memory_limit的设置问题. 我在网上看到,有两种方法解决 1.修改php.ini memory_limit = 128 这种方法需要重启服务器,很显然, ...
- 8.进行图片的裁剪,同时使用resize将图片的维度进行变化
1.img.crop((x1, y1, x2, y2)) 进行图片的裁剪 参数说明: x1, y1, x2, y2 表示图片的大小 2. img.resize((w, h)) # 进行图片的维度变化 ...
- Jmeter测试工具的下载使用
Jmeter是一个非常好用的压力测试工具. Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好.
- Python_基础知识储备
目录 目录 前言 初识Python 解析型与编译型 OOP与POP 相关概念1 Python的解释器 Python程序设计的思想 Python的编程风格 最后 前言 前面的博文从记录了如何Setup ...