我有以下代码并尝试查找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;
}
}
答案 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,这是一个可以用来查看查询的简单工具。