C#很难绕过WMI去获得硬件信息,这里列一下常用的获得硬件信息的方法。
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
if (moc.Count > 0)
foreach (ManagementObject mo in moc)
{
listBox1.Items.Add("CPU ID = " + mo.Properties["ProcessorId"].Value.ToString()+", DeviceID="+ mo.Properties["SerialNumber"].Value.ToString() );
//break;
}
mc = new ManagementClass("Win32_DiskDrive");
moc = mc.GetInstances();
if (moc.Count > 0)
foreach (ManagementObject mo in moc)
{//SerialNumber
listBox1.Items.Add("HDD = " + mo.Properties["Model"].Value.ToString() +", Type="+ mo.Properties["InterfaceType"].Value.ToString());
}
mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
moc = mc.GetInstances();
if (moc.Count > 0)
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
listBox1.Items.Add("MAC = " + mo.Properties["MacAddress"].Value.ToString());
//break;
}
}
mc = new ManagementClass("Win32_baseboard");
moc = mc.GetInstances();
if (moc.Count > 0)
foreach (ManagementObject mo in moc)
{
listBox1.Items.Add("BaseBoard = " + mo.Properties["SerialNumber"].Value.ToString());
//break;
}
mc = new ManagementClass("Win32_BIOS");
moc = mc.GetInstances();
if (moc.Count > 0)
foreach (ManagementObject mo in moc)
{
listBox1.Items.Add("Bios = " + mo.Properties["SerialNumber"].Value.ToString());
//break;
}
mc.Dispose();
moc.Dispose();
label1.Text = (DateTime.Now - st).TotalMilliseconds.ToString();