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_BSSIListWi-Fi アダプターのドライバーがそのようなクラスの WMI プロバイダーを実装している場合にのみ、データを取得します。別の方法として、Native Wifi APIC# を使用している場合は、このプロジェクトを確認してくださいManaged Wifi API

于 2012-05-06T22:25:29.583 に答える
0

マネージコードでWMIを処理する場合は、オブジェクトなどを直接処理するのではなく、 [強い型の管理]クラスジェネレーターを使用することを強くお勧めします。ManagementObjectSearcher

強い型の管理クラスジェネレータツールを使用すると、指定したWindows Management Instrumentation(WMI)クラスの早期バインドされた管理クラスをすばやく生成できます。生成されたクラスは、WMIクラスのインスタンスにアクセスするために作成する必要のあるコードを簡素化します。

このツールは、VisualStudioおよびWindowsSDKとともに自動的にインストールされます。

さらに、クエリをチェックできるシンプルなツールであるwbemtestについて理解しておくことをお勧めします。

于 2012-05-06T22:22:45.500 に答える