WMI和C# - 没有结果

时间:2012-05-06 21:18:09

标签: c# wmi

我有以下代码并尝试查找AP的MAC地址。代码运行,但它不返回任何内容。我究竟做错了什么?

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 个答案:

答案 0 :(得分:2)

仅当您的wifi适配器的驱动程序为此类实现WMI提供程序时,MSNDis_80211_BSSIList才会检索数据。如果您使用C#,请考虑使用Native Wifi API检查此项目Managed Wifi API

答案 1 :(得分:0)

在托管代码中处理WMI时,我强烈建议您使用Management Strongly Typed Class Generator,而不是直接处理ManagementObjectSearcher个对象等。

  

管理强类型类生成器工具使您能够   快速为指定的Windows生成早期绑定的托管类   管理工具(WMI)课程。生成的类简化了   您必须编写的代码才能访问WMI类的实例。

     

此工具随Visual Studio自动安装   Windows SDK。

此外,您可能希望熟悉wbemtest,这是一个可以用来查看查询的简单工具。