VS/C#中的ManagementClass类和获取硬件的信息的用法
在.NET的项目中,有时候需要获取计算机的硬件的相关信息,在C#语言中需要利用ManagementClass这个类来进行相关操作。
ManagementClass类:对表示一个通用信息模型 (CIM) 管理类。 管理类是 WMI 类,如 Win32_LogicalDisk,该类型可表示一个磁盘驱动器,并 Win32_Process,它表示的进程 Notepad.exe 等。 此类的成员可以访问 WMI 数据,使用一个特定的 WMI 类路径。
1.GetInstances():此方法存在四个重载
2.Get():
3.GetSubclasses():此方法存在四个重载版本
C# 提供了ManagementClass类来获取本机的一些基本信息,比如CPU的个数,CPU的频率,网卡的MAC,内存的大小,硬盘的大小等。
//-----------------------// @Author GarFey// @date 20190612// @version 1.0//-----------------------using System;using System.Management;using System.Windows.Forms;namespace GetPCInfo{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){this.macPathtextBox.Text = GetMACString();this.cpuCounttextBox.Text = GetCpuCount().ToString();string[] cpuhz = GetCpuMHZ();foreach( string hz in cpuhz){this.cpuMHZtextBox.Text += hz+"\n";}this.diskSizetextBox.Text = GetSizeOfDisk();this.MemorySizetextBox.Text = GetSizeOfMemery();this.cpuIdtextBox.Text = GetCpuid();this.diskSerialNumbertextBox.Text = GetDiskSerialNumber();this.networkAddresstextBox.Text = GetMacAddress();this.IpAddresstextBox.Text = GetIpAddress();this.userNametextBox.Text = GetUserName();this.pcNametextBox.Text = GetComputerName();this.sysTypetextBox.Text = GetSystemType();this.physicalMemorytextBox.Text = GetPhysicalMemory();this.videoPnpidtextBox.Text = GetVideoPnpid();this.soundPnpidtextBox.Text = GetSoundPnpid();this.cpuVersiontextBox.Text = GetCpuVersion();this.cpuNametextBox.Text = GetCpuName();this.cpuManufacturertextBox.Text = GetCpuManufacturer();this.boardManufacturertextBox.Text = GetBoardManufacturer();this.boardIdtextBox.Text = GetBoardId();this.boardTypetextBox.Text = GetBoardType();}////// 获取本机的MAC地址//////private string GetMACString(){ManagementClass mAdapter = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection mo = mAdapter.GetInstances();foreach (ManagementBaseObject m in mo){if ((bool)m["IpEnabled"] == true){return m["MacAddress"].ToString();}}mo.Dispose();return "";// null;}////// 获取CPU的个数//////private int GetCpuCount(){try{using (ManagementClass mCpu = new ManagementClass("Win32_Processor")){ManagementObjectCollection cpus = mCpu.GetInstances();return cpus.Count;}}catch{}return -1;}////// 获取CPU的频率 这里之所以使用string类型的数组,主要是因为cpu的多核//////private string[] GetCpuMHZ(){ManagementClass mc = new ManagementClass("Win32_Processor");ManagementObjectCollection cpus = mc.GetInstances();string[] mHz = new string[cpus.Count];int c = 0;ManagementObjectSearcher mySearch = new ManagementObjectSearcher("select * from Win32_Processor");foreach (ManagementObject mo in mySearch.Get()){mHz[c] = mo.Properties["CurrentClockSpeed"].Value.ToString();c++;}mc.Dispose();mySearch.Dispose();return mHz;}////// 获取硬盘的大小//////private string GetSizeOfDisk(){ManagementClass mc = new ManagementClass("Win32_DiskDrive");ManagementObjectCollection moj = mc.GetInstances();foreach (ManagementObject m in moj){return m.Properties["Size"].Value.ToString();}return "-1";}////// 获取内存的大小//////private string GetSizeOfMemery(){ManagementClass mc = new ManagementClass("Win32_OperatingSystem");ManagementObjectCollection moc = mc.GetInstances();double sizeAll = 0.0;foreach (ManagementObject m in moc){if (m.Properties["TotalVisibleMemorySize"].Value != null){sizeAll += Convert.ToDouble(m.Properties["TotalVisibleMemorySize"].Value.ToString());}}mc = null;moc.Dispose();return sizeAll.ToString();}////// 获得CPU编号//////public string GetCpuid(){var cpuid = string.Empty;var mc = new ManagementClass("Win32_Processor");var moc = mc.GetInstances();foreach (var o in moc){var mo = (ManagementObject)o;cpuid = mo.Properties["ProcessorId"].Value.ToString();}return cpuid;}////// 获取硬盘序列号//////public string GetDiskSerialNumber(){//这种模式在插入一个U盘后可能会有不同的结果,如插入我的手机时var hDid = string.Empty;var mc = new ManagementClass("Win32_DiskDrive");var moc = mc.GetInstances();foreach (var o in moc){var mo = (ManagementObject)o;hDid = (string)mo.Properties["Model"].Value;//这名话解决有多个物理盘时产生的问题,只取第一个物理硬盘break;}return hDid;}////// 获取网卡硬件地址////// public string GetMacAddress(){var mac = "";var mc = new ManagementClass("Win32_NetworkAdapterConfiguration");var moc = mc.GetInstances();foreach (var o in moc){var mo = (ManagementObject)o;if (!(bool)mo["IPEnabled"]) continue;mac = mo["MacAddress"].ToString();break;}return mac;}////// 获取IP地址//////public string GetIpAddress(){var st = string.Empty;var mc = new ManagementClass("Win32_NetworkAdapterConfiguration");var moc = mc.GetInstances();foreach (var o in moc){var mo = (ManagementObject)o;if (!(bool)mo["IPEnabled"]) continue;var ar = (Array)(mo.Properties["IpAddress"].Value);st = ar.GetValue(0).ToString();break;}return st;}////// 操作系统的登录用户名////// public string GetUserName(){return Environment.UserName;}////// 获取计算机名//////public string GetComputerName(){return Environment.MachineName;}////// 操作系统类型////// public string GetSystemType(){var st = string.Empty;var mc = new ManagementClass("Win32_ComputerSystem");var moc = mc.GetInstances();foreach (var o in moc){var mo = (ManagementObject)o;st = mo["SystemType"].ToString();}return st;}////// 物理内存//////public string GetPhysicalMemory(){var st = string.Empty;var mc = new ManagementClass("Win32_ComputerSystem");var moc = mc.GetInstances();foreach (var o in moc){var mo = (ManagementObject)o;st = mo["TotalPhysicalMemory"].ToString();}return st;}////// 显卡PNPDeviceID//////public string GetVideoPnpid(){var st = "";var mos = new ManagementObjectSearcher("Select * from Win32_VideoController");foreach (var o in mos.Get()){var mo = (ManagementObject)o;st = mo["PNPDeviceID"].ToString();}return st;}////// 声卡PNPDeviceID//////public string GetSoundPnpid(){var st = string.Empty;var mos = new ManagementObjectSearcher("Select * from Win32_SoundDevice");foreach (var o in mos.Get()){var mo = (ManagementObject)o;st = mo["PNPDeviceID"].ToString();}return st;}////// CPU版本信息//////public string GetCpuVersion(){var st = string.Empty;var mos = new ManagementObjectSearcher("Select * from Win32_Processor");foreach (var o in mos.Get()){var mo = (ManagementObject)o;st = mo["Version"].ToString();}return st;}////// CPU名称信息//////public string GetCpuName(){var st = string.Empty;var driveId = new ManagementObjectSearcher("Select * from Win32_Processor");foreach (var o in driveId.Get()){var mo = (ManagementObject)o;st = mo["Name"].ToString();}return st;}////// CPU制造厂商//////public string GetCpuManufacturer(){var st = string.Empty;var mos = new ManagementObjectSearcher("Select * from Win32_Processor");foreach (var o in mos.Get()){var mo = (ManagementObject)o;st = mo["Manufacturer"].ToString();}return st;}////// 主板制造厂商//////public string GetBoardManufacturer(){var query = new SelectQuery("Select * from Win32_BaseBoard");var mos = new ManagementObjectSearcher(query);var data = mos.Get().GetEnumerator();data.MoveNext();var board = data.Current;return board.GetPropertyValue("Manufacturer").ToString();}////// 主板编号//////public string GetBoardId(){var st = string.Empty;var mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");foreach (var o in mos.Get()){var mo = (ManagementObject)o;st = mo["SerialNumber"].ToString();}return st;}////// 主板型号//////public string GetBoardType(){var st = string.Empty;var mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");foreach (var o in mos.Get()){var mo = (ManagementObject)o;st = mo["Product"].ToString();}return st;}
VS/C#中的ManagementClass类和获取硬件的信息的用法相关推荐
- java中遍历实体类,获取属性名和属性值
方式一(实体类): //java中遍历实体类,获取属性名和属性值public static void testReflect(Object model) throws Exception{for (F ...
- C#中的ManagementClass类
C# 提供了ManagementClass类来获取本机的一些基本信息,比如CPU的个数,CPU的频率,网卡的MAC,内存的大小,硬盘的大小等. 获取本机MAC地址: /// <summary&g ...
- java读取微信消息_微信公众平台开发中使用Java如何实现获取用户的信息
微信公众平台开发中使用Java如何实现获取用户的信息 发布时间:2020-11-18 15:09:28 来源:亿速云 阅读:93 作者:Leah 本篇文章为大家展示了微信公众平台开发中使用Java如何 ...
- C++通过WMI获取硬件配置信息
C++通过WMI获取硬件配置信息 WMI即Windows管理规范.通过它可以访问.配置.管理和监视几乎所有的Windows资源. WMI提供程序在WMI和托管资源之间扮演着中间方的角色.提供程序代表使 ...
- Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用
Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...
- linux下通过Python代码实现获取硬件接口信息
linux下通过Python代码实现获取硬件接口信息 1.CPU架构 Python中,platform模块给提供了很多方法去获取操作系统的信息. touch cpu.py vi cpu.py #编辑内 ...
- ASP.NET中使用Cache类来缓存页面的信息
场景 ASP.NET中新建Web网站并部署到IIS上(详细图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/107199 ...
- 获取头信息header中参数access_token失败,获取header头信息中带下划线参数失败
今天获取header头信息中参数access_token返回为null,本地用postman测试没问题,发布到线上环境就出问题了. 后面发现是nginx代理的过程中参数被过滤了,ngi ...
- php获取文件夹中的音乐文件_PHP获取音频文件信息的方法
本篇文章主要介绍PHP获取音频文件信息的方法,感兴趣的朋友参考下,希望对大家有所帮助. 项目需求:现在有一个音频文件上传的功能,在上传后PHP需要获取这个音频文件的相关信息,例如:时长等,由于这个文件 ...
最新文章
- 使用代理软件之后其他软件不能联网的解决方法
- Centos6/7下静默安装oracle10g
- SRCNN-图像超分辨的学习
- windows下mongodb配置
- 偷梁换柱——揭开多态的面纱
- 原理+实战掌握SQL注入方法
- 趣说技术 | 用MQ 能完全替代 RPC 调用?
- Compiling XORP v1.2 in Debian 3.1
- ADO.NET数据访问方式:SqlDataReader
- 固态硬盘用软件测试掉速严重,SSD固态硬盘掉速怎么办?手动执行TRIM指令缓解固态硬盘掉速方法...
- 【网络安全基础】数字签名原理及应用
- 计算机技术对高分子的意义,计算机技术在高分子材料工程中的应用.docx
- 网站PV,UV是什么意思?
- 文件如何生成链接插入到微信公众号,如Word、Excel、Pdf等
- 机器视觉软件开发SDK
- Ubuntu 18.04 桌面卡死
- IOT连接阿里云(一):调试MQTT通路
- ios第三方支付流程
- 查看及更改计算机名或域,如何查看和修改计算机名、域和工作组
- Android N中UI硬件渲染(hwui)的HWUI_NEW_OPS(基于Android 7.1)