4

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

这是我找到的代码:

 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"]);    
}
4

1 回答 1

4

根据 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 设备的大量信息

于 2012-08-29T06:27:09.940 回答