2012-10-04 66 views
2

在試圖找到網絡上的一組計算機時,我發現了ManagementObjectSearcher類以及ManagementObject類。 ManagementObjectSearcher的構造函數將sql/sql-esque查詢作爲參數。目前,我用我自己的遺留代碼中發現查詢:ManagementObjectSearcher查詢值從哪裏來? (WMI)

ManagementObjectSearcher adapters = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter"); 

但我試圖找出如何知道什麼可能是在查詢中。所有的表格/對象是什麼?什麼是可能的約束?這個課程和相關的問題會涉及到什麼大題目,所以我可以查看並瞭解更多信息?

回答

5

在進一步的研究看來好像這是WMI(Windows管理體系結構)

WMI查詢的一部分: http://msdn.microsoft.com/en-us/library/ms186146(v=vs.80).aspx

的WMI搜索標準的列表: http://msdn.microsoft.com/en-us/library/windows/desktop/aa394554(v=vs.85).aspx

使用WMI: http://msdn.microsoft.com/en-us/library/windows/desktop/aa393964(v=vs.85).aspx

書籍: http://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=WMI

示例代碼:

 ManagementObjectSearcher adapters = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus = 2"); 

     foreach (ManagementObject item in adapters.Get()) 
     { 
      foreach (ManagementObject setting in item.GetRelated("Win32_NetworkAdapterConfiguration")) 
      { 
       if ((!setting["IPAddress"].IsNull()) && 
        (!setting["IPSubnet"].IsNull())) 
       { 
        foreach (string value in (String[])setting["IPAddress"]) 
        { 
         mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);     
         mySocket.Bind(new IPEndPoint(IPAddress.Parse(value), 49984)); 
         //etc... 
        } 
       } 

      } 
     } 

看起來這是整個一個相當巨大的話題,但是這至少給了我一個地方開始試圖理解它。但是,我仍然完全不確定這是否是解決我正在嘗試解決的問題的良好解決方案。