2012-05-06 20 views
1

我有以下代碼並嘗試查找AP的MAC地址。代碼運行,但它不返回任何內容。我究竟做錯了什麼?WMI和C# - 無結果

using System; 
using System.Management; 

public class wifiTest 
{ 
    public static int Main(string[] args) 
    { 

     String query = "SELECT * FROM MSNDis_80211_BSSIList"; 
     ManagementObjectSearcher searcher = new ManagementObjectSearcher("root/WMI", query); 
     ManagementObjectCollection moc = searcher.Get(); 
     ManagementObjectCollection.ManagementObjectEnumerator moe = moc.GetEnumerator(); 
     moe.MoveNext(); 
     ManagementBaseObject[] objarr = (ManagementBaseObject[])moe.Current.Properties["Ndis80211BSSIList"].Value; 
     foreach (ManagementBaseObject obj in objarr) 
     { 
      uint u_rssi = (uint)obj["Ndis80211Rssi"]; 
      int rssi = (int)u_rssi;  

      int macAd = (int)obj["Ndis80211MacAddress"]; 

      Console.WriteLine("RSSI=" + rssi); 
      Console.WriteLine("Mac=" + macAd);    
     } 
     return 0; 
    } 
} 
+2

有什麼可能有幫助:插入一些斷點並調試以查看「objarr」是否爲空。 – ChristopheD

回答

2

MSNDis_80211_BSSIList僅當您的wifi適配器的驅動程序爲這樣的類實現WMI提供程序時才檢索數據。如果您正在使用C#,請選擇Native Wifi API選擇此項目Managed Wifi API

0

當WMI託管代碼打交道,我強烈建議你使用Management Strongly Typed Class Generator,而不是直接處理ManagementObjectSearcher對象和喜歡。

的管理強類型類生成工具可以 快速生成一個指定的Windows 管理規範(WMI)類的早期綁定的託管類。生成的類將簡化 您必須編寫的用於訪問WMI類實例的代碼。

此工具自動與Visual Studio和 Windows SDK一起安裝。

此外,你可能想要熟悉wbemtest,這是一個簡單的工具,您可以檢查您的查詢。