2012-08-15 93 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設備