有時需要在C#中擷取電腦的一些硬體裝置資訊,如CPU序號、硬碟ID等,.NET 提供的System.Management.ManagementClass是對裝置管理的支援,其表示公用資訊模型 (CIM) 管理類。管理類是一個 WMI 類別,如 Win32_LogicalDisk 和 Win32_Process,前者表示磁碟機,後者表示進程(如 Notepad.exe)。通過該類的成員,可以使用特定的 WMI 類別路徑訪問 WMI 資料。有關更多資訊,請參見“Windows Management Instrumentation”文檔中的“Win32 Classes”(Win32 類),該文檔位於 http://www.microsoft.com/china/msdn/library 上的 MSDN Library 中。
//擷取cpu序號
string cpuInfo = "";
ManagementClass cimobject = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = cimobject.GetInstances();
foreach(ManagementObject mo in moc)
{
if(mo.Properties["ProcessorId"].Value != null)
cpuInfo += mo.Properties["ProcessorId"].Value.ToString();
}
result += cpuInfo; //擷取硬碟ID
string HDid = "";
ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc1 = cimobject1.GetInstances();
foreach(ManagementObject mo in moc1)
{
if(mo.Properties["Model"].Value != null)
HDid += (string)mo.Properties["Model"].Value.ToString();
}
result += HDid;
//擷取網卡硬體地址
string MACAddress = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc2 = mc.GetInstances();
foreach(ManagementObject mo in moc2)
{
if((bool)mo["IPEnabled"] == true && mo["MacAddress"] != null)
MACAddress += mo["MacAddress"].ToString();
mo.Dispose();
}
result += MACAddress;