在.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类和获取硬件的信息的用法相关推荐

  1. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值public static void testReflect(Object model) throws Exception{for (F ...

  2. C#中的ManagementClass类

    C# 提供了ManagementClass类来获取本机的一些基本信息,比如CPU的个数,CPU的频率,网卡的MAC,内存的大小,硬盘的大小等. 获取本机MAC地址: /// <summary&g ...

  3. java读取微信消息_微信公众平台开发中使用Java如何实现获取用户的信息

    微信公众平台开发中使用Java如何实现获取用户的信息 发布时间:2020-11-18 15:09:28 来源:亿速云 阅读:93 作者:Leah 本篇文章为大家展示了微信公众平台开发中使用Java如何 ...

  4. C++通过WMI获取硬件配置信息

    C++通过WMI获取硬件配置信息 WMI即Windows管理规范.通过它可以访问.配置.管理和监视几乎所有的Windows资源. WMI提供程序在WMI和托管资源之间扮演着中间方的角色.提供程序代表使 ...

  5. Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用

    Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...

  6. linux下通过Python代码实现获取硬件接口信息

    linux下通过Python代码实现获取硬件接口信息 1.CPU架构 Python中,platform模块给提供了很多方法去获取操作系统的信息. touch cpu.py vi cpu.py #编辑内 ...

  7. ASP.NET中使用Cache类来缓存页面的信息

    场景 ASP.NET中新建Web网站并部署到IIS上(详细图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/107199 ...

  8. 获取头信息header中参数access_token失败,获取header头信息中带下划线参数失败

    今天获取header头信息中参数access_token返回为null,本地用postman测试没问题,发布到线上环境就出问题了.         后面发现是nginx代理的过程中参数被过滤了,ngi ...

  9. php获取文件夹中的音乐文件_PHP获取音频文件信息的方法

    本篇文章主要介绍PHP获取音频文件信息的方法,感兴趣的朋友参考下,希望对大家有所帮助. 项目需求:现在有一个音频文件上传的功能,在上传后PHP需要获取这个音频文件的相关信息,例如:时长等,由于这个文件 ...

最新文章

  1. 使用代理软件之后其他软件不能联网的解决方法
  2. Centos6/7下静默安装oracle10g
  3. SRCNN-图像超分辨的学习
  4. windows下mongodb配置
  5. 偷梁换柱——揭开多态的面纱
  6. 原理+实战掌握SQL注入方法
  7. 趣说技术 | 用MQ 能完全替代 RPC 调用?
  8. Compiling XORP v1.2 in Debian 3.1
  9. ADO.NET数据访问方式:SqlDataReader
  10. 固态硬盘用软件测试掉速严重,SSD固态硬盘掉速怎么办?手动执行TRIM指令缓解固态硬盘掉速方法...
  11. 【网络安全基础】数字签名原理及应用
  12. 计算机技术对高分子的意义,计算机技术在高分子材料工程中的应用.docx
  13. 网站PV,UV是什么意思?
  14. 文件如何生成链接插入到微信公众号,如Word、Excel、Pdf等
  15. 机器视觉软件开发SDK
  16. Ubuntu 18.04 桌面卡死
  17. IOT连接阿里云(一):调试MQTT通路
  18. ios第三方支付流程
  19. 查看及更改计算机名或域,如何查看和修改计算机名、域和工作组
  20. Android N中UI硬件渲染(hwui)的HWUI_NEW_OPS(基于Android 7.1)

热门文章

  1. 每日跑批任务耗时性能从六分钟优化到半分钟历程及总结
  2. setting文件配置
  3. 2020 BAPC Preliminaries 题解
  4. 浏览器大战中的搜狗浏览器
  5. 90后负债数据调查,人均负债超12万元
  6. 软件工程课程小组成员介绍
  7. 补充“为什么Scrum不行” (转自陈勇)
  8. 7月16日周二晚上,陈勇,【敏捷网络课堂第六期】【免费】敏捷开发早期估算...
  9. 分享45个android实例源码,很好很强大.收藏吧!!!
  10. MyEclipse 2013优化技巧