WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法

简介: 原文:WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都是可以提取出来的,就自己把那些公共部分提出出来,以后如果要获取 某部分的硬件信息就不用写一个一个的函数,比如获取MAC地址就写一个获取MAC地址的函数,获取CPU 信息就...
原文: WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法

今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都是可以提取出来的,就自己把那些公共部分提出出来,以后如果要获取

某部分的硬件信息就不用写一个一个的函数,比如获取MAC地址就写一个获取MAC地址的函数,获取CPU 信息就写一个获取CPU信息的

函数,太麻烦了

如下是函数代码:

 1         private static string identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue)
 2         {
 3             string result = "";
 4             System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);
 5             System.Management.ManagementObjectCollection moc = mc.GetInstances();
 6             foreach (System.Management.ManagementObject mo in moc)
 7             {
 8                 if (mo[wmiMustBeTrue].ToString() == "True")
 9                 {
10                     if (result == "")
11                     {
12                         try
13                         {
14                             result = mo[wmiProperty].ToString();
15                             break;
16                         }
17                         catch
18                         {
19                         }
20                     }
21 
22                 }
23             }
24             return result;
25         }
26 
27 
28         private static string identifier(string wmiClass, string wmiProperty)
29         {
30             string result = "";
31             System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);
32             System.Management.ManagementObjectCollection moc = mc.GetInstances();
33             foreach (System.Management.ManagementObject mo in moc)
34             {
35                 if (result == "")
36                 {
37                     try
38                     {
39                         result = mo[wmiProperty].ToString();
40                         break;
41                     }
42                     catch
43                     {
44                     }
45                 }
46 
47             }
48             return result;
49         }

获取CPUID

1         private static string cpuId()
2         {     
3             string retVal = identifier("Win32_Processor", "UniqueId");  //CPUID   
4             retVal += identifier("Win32_Processor", "ProcessorId");
5             retVal += identifier("Win32_Processor", "Name");  //处理器名称
6             retVal += identifier("Win32_Processor", "Manufacturer");  //处理器制造商
7             retVal +=identifier("Win32_Processor", "MaxClockSpeed");  //最大时钟频率
8             return retVal;
9         }

 

获取BIOS信息,其中BIOS序列号就是联想台式机的出厂编号,我看联想的保修页面里的自动获取主机编号应该也是调用

这个"Win32_BIOS"的 "SerialNumber

报修页面网址:http://support1.lenovo.com.cn/lenovo/wsi/wsbx/lenovo/#minarepairInfo

 

 1         //BIOS信息
 2         private static string biosId()
 3         {
 4             return identifier("Win32_BIOS", "Manufacturer")          //BIOS制造商名称
 5                     + identifier("Win32_BIOS", "SMBIOSBIOSVersion")  //
 6                     + identifier("Win32_BIOS", "IdentificationCode") //
 7                     + identifier("Win32_BIOS", "SerialNumber")       //BIOS序列号
 8                     + identifier("Win32_BIOS", "ReleaseDate")        //出厂日期
 9                     + identifier("Win32_BIOS", "Version");           //版本号
10         }

 

 

获取硬盘信息:

1         private static string diskId()
2         {
3             return identifier("Win32_DiskDrive", "Model")           //模式
4                     + identifier("Win32_DiskDrive", "Manufacturer") //制造商
5                     + identifier("Win32_DiskDrive", "Signature")    //签名
6                     + identifier("Win32_DiskDrive", "TotalHeads");  //扇区头
7         }

 

获取主板信息:

1         private static string baseId()
2         {
3             return identifier("Win32_BaseBoard", "Model")              
4                     + identifier("Win32_BaseBoard", "Manufacturer")    
5                     + identifier("Win32_BaseBoard", "Name")
6                     + identifier("Win32_BaseBoard", "SerialNumber");
7         }

获取显卡信息:

1         private static string videoId()
2         {
3             return identifier("Win32_VideoController", "DriverVersion")
4                     + identifier("Win32_VideoController", "Name");
5         }

 

获取网卡MAC地址信息:

1         private static string macId()
2         {
3             return identifier("Win32_NetworkAdapterConfiguration", "MACAddress", "IPEnabled"); 
4         }

 

 

如有什么不对的地方,欢迎大家拍砖!!

 

 

 

 

目录
相关文章
高通平台开发系列讲解(USB篇)USB端口的说明及切换方法
高通平台开发系列讲解(USB篇)USB端口的说明及切换方法
346 0
高通平台开发系列讲解(USB篇)USB端口的说明及切换方法
|
18天前
|
存储 缓存 固态存储
Linux设备全览:从字符到块,揭秘每种设备的秘密
在Linux的世界里,设备是构成系统的基础,它们使得计算机能够与外界互动。Linux设备可以大致分为几种类型,每种类型都有其独特的特性和用途。🌌让我们一起探索这些设备类型及其特性。
|
7月前
|
Windows
keychron K3 键盘和 Windows11 操作系统的笔记本电脑通过蓝牙配对出现问题的解决方案
keychron K3 键盘和 Windows11 操作系统的笔记本电脑通过蓝牙配对出现问题的解决方案
133 0
|
Android开发
移动设备 小米2S不显示CD驱动器(H),便携设备,MTP,驱动USB Driver,MI2感叹号的解决方法
移动设备 小米2S不显示CD驱动器(H),便携设备,MTP,驱动USB Driver,MI2感叹号的解决方法
304 0
西门子S7-200 SMART如何用存储卡复位CPU出厂设置、固件升级、程序传输
上篇文章中我们学习了西门子S7-200 SMART的全局变量和局部变量以及如何编写带参数子程序并调用,本篇我们来介绍西门子S7-200 SMART使用存储卡复位CPU到出厂设置、固件升级和程序传输。S7-200 SMART CPU使用FAT32文件系统格式,支持容量为4G至32G范围内的标准商用MicroSD HC卡。
西门子S7-200 SMART如何用存储卡复位CPU出厂设置、固件升级、程序传输
WinCE下串口虚拟软件
前段时间,介绍了一个WinCE下的串口调试软件Serial Splitter Mobile 3.2。它的主要功能是将一个物理串口克隆成N个,供不同的应用程序使用,以监视物理串口收发的数据。今天介绍一个WinCE下的串口虚拟软件VSPD Mobile 4.2。
924 0
|
Linux Shell Go
一个设想,在统一bios/uefi firmware,及内存中的firmware中为pebuilder.sh建立不死booter
本文关键字:firmware in RAM' replacements for UEFI firmware,虚拟efi,编译类colinux的linuxboot
218 0
一个设想,在统一bios/uefi firmware,及内存中的firmware中为pebuilder.sh建立不死booter