要想擷取運行主機的各種配置資訊,如網卡MAC地址,IP地址,硬碟分區,硬碟號等等,只要引用System.Management就可以輕鬆實現這一切。比起VC++的實現簡單的多得多。例如擷取當前使能的網卡MAC,並顯示在列表框控制項中:
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");<br /> ManagementObjectCollection moc = mc.GetInstances();<br /> foreach (ManagementObject mo in moc)<br /> {<br /> if ((bool)mo["IPEnabled"] == true)<br /> listBox1.Items.Add ( mo["MacAddress"].ToString());</p><p> }<br />
上述代碼,只能擷取到啟用的網卡,並且網卡必須有連線。要想在網路連線斷開的情況下也能擷取到MAC,則需要如下代碼
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");<br /> ManagementObjectCollection moc = mc.GetInstances();<br /> foreach (ManagementObject mo in moc)<br /> {<br /> if ((bool)mo["MacAddress"] != null)<br /> listBox1.Items.Add ( mo["MacAddress"].ToString());</p><p> }<br />
上述代碼,可以擷取到斷線的網卡MAC,但是不能擷取到禁用的網卡MAC。
另外,擷取CPU序號,硬碟序號的代碼如下:
private void GetInfo()<br /> {<br /> string cpuInfo = "";//cpu序號<br /> ManagementClass cimobject = new ManagementClass("Win32_Processor");<br /> ManagementObjectCollection moc = cimobject.GetInstances();<br /> foreach(ManagementObject mo in moc)<br /> {<br /> cpuInfo = mo.Properties["ProcessorId"].Value.ToString();<br /> Console.WriteLine ("cpu序號:"+cpuInfo.ToString ());<br /> }<br /> //擷取硬碟ID<br /> String HDid;<br /> ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");<br /> ManagementObjectCollection moc1 = cimobject1.GetInstances();<br /> foreach(ManagementObject mo in moc1)<br /> {<br /> HDid = (string)mo.Properties["Model"].Value;<br /> Console.WriteLine("硬碟序號:"+HDid.ToString ());<br /> }<br />