今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都是可以提取出来的,就自己把那些公共部分提出出来,以后如果要获取
某部分的硬件信息就不用写一个一个的函数,比如获取MAC地址就写一个获取MAC地址的函数,获取cpu 信息就写一个获取cpu信息的
函数,太麻烦了
1 private static string identifier(string wmiClass,string wmiProperty,1)">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 break16 } 17 catch 18 19 20 } 21 22 } 23 } 24 return result; 25 } 26 27 28 wmiProperty) 29 30 31 System.Management.ManagementClass mc = 32 System.Management.ManagementObjectCollection moc =33 34 35 36 37 38 39 result =40 41 42 43 44 45 46 47 48 49 }
1 cpuId() 2 { 3 string retVal = identifier(Win32_Processor",UniqueId"); //cpuID 4 retVal += identifier(ProcessorId); 5 retVal += identifier(Name处理器名称 6 retVal += identifier(Manufacturer处理器制造商 7 retVal +=identifier(MaxClockSpeed最大时钟频率 8 retVal; 9 }
获取BIOS信息,其中BIOS序列号就是联想台式机的出厂编号,我看联想的保修页面里的自动获取主机编号应该也是调用
这个"Win32_BIOS"的 "SerialNumber
报修页面网址:http://support1.lenovo.com.cn/lenovo/wsi/wsbx/lenovo/#minarepairInfo
BIOS信息 2 biosId() 3 4 return identifier(Win32_BIOS") BIOS制造商名称 5 + identifier(SMBIOSBIOSVersion") // 6 + identifier(IdentificationCode") 7 + identifier(SerialNumber") BIOS序列号 8 + identifier(ReleaseDate") 出厂日期 9 + identifier(Version"); 版本号 10 }
获取硬盘信息:
diskId() Win32_DiskDriveModel") 模式 4 + identifier(制造商 5 + identifier(Signature") 签名 6 + identifier(TotalHeads扇区头 7 }
获取主板信息:
baseId() Win32_BaseBoard) ) 7 }
获取显卡信息:
videoId() Win32_VideoControllerDriverVersion5 }
获取网卡MAC地址信息:
macId() Win32_NetworkAdapterConfigurationMACAddressIPEnabled); 4 }
如有什么不对的地方,欢迎大家拍砖!!