web-dev-qa-db-ja.com

Windowsは、どのネットワークアダプタがワイヤレスデバイスであるかをどのように認識しますか?

レジストリまたはWMI(wbemtestを使用)を介して、このネットワークアダプターがワイヤレス接続を使用していることを示す値を見つけようとしています。 AdapterTypeのようなWMIWin32_NetworkAdapterクラスには値がありますが、それらはイーサネットデバイスであることを示しているだけです。別のPCでこのクラスをクエリすると、WiFi_NetworkAdapterエントリが表示されますが、それはドライバーベンダーがどのように実装したかによると思います。レジストリで何かを見つけようとしましたが、何も見つかりませんでした。これがワイヤレスデバイスであることがわかる唯一の部分は、名前と説明を見ているときですが、正直なところ、それは良い解決策ではありません。 Windowsの場合XP「MediaSubType」フィールドが下にあるレジストリキーを見つけました

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{GUID}\Connection

しかし、Windows 7では、このキーは必須ではないようです。

レジストリまたはWMI以外の他のソリューションも非常に高く評価されていますが、後で小さなC++プログラムを作成したいので、サードパーティのツールは使用したくないことを覚えておいてください。

3
seveves

MediaSubTypeDWORD値を参照してください。 MediaSubtype = 2の場合、ネットワークアダプタはワイヤレスデバイスです。

powershell gci 'hklm:SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}' -rec ^| gp ^| FT MediaSubtype, Name, PnpInstanceID -Au

または、 _ MIB_IF_ROW2 構造を取得します。NDIS_PHYSICAL_MEDIUMを参照してください。

また、PnpInstanceIDおよび PCI IDリポジトリ(データベース) または PCIベンダーおよびデバイスリスト(情報) を使用することもできます。

すべてのワイヤレス接続とその信号強度のリストを取得します。

wmic /NAMESPACE:\\ROOT\wmi path MSNdis_80211_ReceivedSignalStrength get *
2
STTR