1

我有以下代码并尝试查找 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;
    }
}
4

2 回答 2

2

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

于 2012-05-06T22:25:29.583 回答
0

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

Management Strongly Typed Class Generator 工具使您能够为指定的 Windows Management Instrumentation (WMI) 类快速生成早期绑定托管类。生成的类简化了访问 WMI 类实例所必须编写的代码。

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

此外,您可能想熟悉wbemtest,这是一个简单的工具,您可以使用它检查您的查询。

于 2012-05-06T22:22:45.500 回答