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 欢迎转帖 请保持文本完整并注明出处 仅 ...
随机推荐
- HDU 2829 [Lawrence] DP斜率优化
解题思路 首先肯定是考虑如何快速求出一段铁路的价值. \[ \sum_{i=1}^k \sum_{j=1, j\neq i}^kA[i]A[j]=(\sum_{i=1}^kA[i])^2-\sum_{ ...
- BZOJ 4849 [NEERC2016]Mole Tunnels (模拟费用流)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=4849 题解 其实也是模拟费用流,但是这道题和一般的题目不一样,这道题是在一个完全二叉树上 ...
- [Pytorch笔记] scatter_
https://blog.csdn.net/qq_16234613/article/details/79827006 scatter_(input, dim, index, src)将src中数据根据 ...
- Ubuntu18.04安装rabbitvcs svn图形化客户端和简单实用
1.1 自带source源里面查找rabbitvcs信息 sudo apt search rabbitvcs 1.2 安装rabbitvcs sudo apt install rabbitvcs- ...
- R_Studio(聚类)针对iris数据比较几种聚类方法优劣
聚类分析 百度百科:传送门 聚类分析指将物理或抽象对象的集合分组为由类似的对象组成的多个类的分析过程 聚类与分类的不同在于,聚类所要求划分的类是未知的 聚类分析是一种探索性的分析,在分类的过程中,人们 ...
- Python 入门知识
一python 语言介绍 特点 简单清晰明确 目前是全球最火的高级编程语言 应用领域很广 NASA FACEBOOK 谷歌 春雨医生 金山 腾讯,Python是一门解释性弱类型编程语言.编译性得 ...
- react属性之exact
exact是Route下的一个属性,react路由会匹配到所有能匹配到的路由组件,exact能够使得路由的匹配更严格一些. exact的值为bool型,为true时表示严格匹配,为false时为正常匹 ...
- oracle存储过程错误跟踪
1.首先创建用于保存错误信息的表 1 2 3 4 5 6 7 8 CREATE TABLE TBL_PROC_ERRMSG ( BIZ_CODE VARCHAR2(50), ERR_LINE ...
- SQL Server AlwaysOn原理简介
SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例,数据库镜像和日志传送的单位是单个用户数据库,而A ...
- ajaxfrom 和ajaxgird的区别
ajaxfrom 和ajaxgird区别ajaxfrom适合单条数据,主要是用来显示主表的信息<hy:ajaxform2 id="ajaxform" name="d ...