2012-08-15 59 views
3

我想从C#中的设备管理器获取系统设备ID。我发现了一些代码来查找USB设备ID,但我不知道如何将代码从USB设备更改为PCI设备。如何获取PCI设备的设备ID?

这是我发现的代码:

ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_SystemDevices WHERE InterfaceType='USB'");  
foreach (ManagementObject mo in mos.Get())  
{ 
     ManagementObject query = new ManagementObject("Win32_PhysicalMedia.Tag='" + mo["DeviceID"] + "'");  
     Console.WriteLine(query["SerialNumber"]);  
} 

回答

3

根据MSDN,Win32_PhysicalMedia表示任何类型的文档或存储介质中。 如果您想从PCI设备获取DeviceID(例如在控制面板中的设备管理器中) - 您需要Win32_PnPEntity类,它表示即插即用设备的属性。因此,尝试使用此代码:

ManagementObjectSearcher searcher = 
new ManagementObjectSearcher("root\\CIMV2", 
"SELECT * FROM Win32_PnPEntity"); 

foreach (ManagementObject queryObj in searcher.Get()) 
{ 
    Console.WriteLine("DeviceID: {0}", queryObj["DeviceID"]); 
    Console.WriteLine("Description: {0}", queryObj["Description"]); 
} 

运行此代码为我提供了大量的信息对我的PCI设备