2017-05-06 174 views
1

我在c#中很新手,但不幸的是必須發現usb端口的VID和PID。獲取WMI屬性

ObjectQuery objectQuery = new ObjectQuery("SELECT * FROM Win32_PnPEntity WHERE ConfigManagerErrorCode = 0"); 
ManagementObjectSearcher comPortSearcher = new ManagementObjectSearcher(connectionScope, objectQuery); 

using (comPortSearcher) 
{ 
    string caption = null; 
    foreach (ManagementObject obj in comPortSearcher.Get()) 
    { 
     if (obj != null) 
     { 
      object captionObj = obj["Caption"]; 
      // Rest of code 
     } 
    } 
} 

我其實不知道這個關鍵字"Caption"來自哪裏。我怎樣才能知道在這個對象中隱藏了哪些鍵?我很不清楚。 如何獲取其他這樣的列表"Keys"

+0

用來檢查'obj'變量調試器。你應該可以鑽入其屬性。 – Crowcoder

+0

不幸的是我沒有成功 –

回答

1

此代碼可以通過WMI訪問不同的屬性。具體而言,Win32_PnPEntity類別表示即插即用設備的屬性。

查看更多MSDN上關於Win32_PnPEntity class和它的屬性:

[Dynamic, Provider("CIMWin32"), UUID("{FE28FD98-C875-11d2-B352-00104BC97924}"), AMENDMENT] 
class Win32_PnPEntity : CIM_LogicalDevice 
{ 
    uint16 Availability; 
    string Caption; 
    string ClassGuid; 
    string CompatibleID[]; 
    uint32 ConfigManagerErrorCode; 
    /* Rest of properties... */ 
}; 

ManagementObjectSearcher是一個辦法retrieve information of a WMI Class

+0

非常感謝。它已經整理了我的問題。我會在7分鐘內接受它作爲答案(相當有趣,爲什麼我不能這麼做) –

+0

@PeterJ - 歡迎您:)並感謝您接受答案:)至於時間段:[爲什麼不能在提出問題後的第一個15分鐘內,我接受了答案?](https://meta.stackoverflow.com/q/250132/6400526);) –