4

I am trying to get the system device IDs from the device manager, in C#. I found some code to find the USB device ID, but I don't know how to change the code from USB device to PCI device.

This is the code that I found:

 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"]);    
}
KevinM
  • 567
  • 4
  • 21
user1600045
  • 41
  • 1
  • 2

1 Answers1

4

According to MSDN, Win32_PhysicalMedia represents any type of documentation or storage medium. If you want to get DeviceID from PCI device (like as in Device Manager at Control Panel) - you need Win32_PnPEntity class, which represents the properties of a Plug and Play device. So, try to use this code:

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

Running this code provides me lots of info about my PCI devices

soralex
  • 129
  • 1
  • 10