11

私は WMI (Win32_NetworkAdapter) を使用しており、接続されている物理ネットワーク アダプターの詳細を有線または無線で取得し、仮想アダプターなどを回避しようとしています。

この記事を読むと、WMI で巧妙なクエリを実行して、仮想アダプターを排除し、実際の物理アダプターのみを返すようにする必要があることが説明されています。

この投稿を読むと、ネットワーク アダプターの「説明」のテキストを比較して、「ワイヤレス」、「802.11」、または「WLAN」が含まれているかどうかを確認できることが説明されています。アダプタ。

今日の .Net バージョンおよびその他の進歩により、Windows XP+ でネットワーク アダプタが有線または無線であり、VM ソフトウェアなどからの仮想アダプタではないかどうかを判断する唯一の方法はこれらの 2 つだけですか? そうでない場合は、説明してください。

4

3 に答える 3

2

これは古い質問だと思いますが、インターネット上の他の場所で、これを行う方法を説明している回答を見つけました(コメントまでスクロールしてください)。

コメント者の技術により、他のすべてのタイプをグループ化できる WiFi および Bluetooth インターフェイスの識別が可能になります。WiFi をイーサネット アダプタから分離することだけが目的であれば、それで十分です。

クエリは次のとおりです (Powershell サンプル)。

$nics = Get-WmiObject -Namespace "root/CIMV2" -Query "SELECT * FROM Win32_NetworkAdapter"
$types = Get-WmiObject -Namespace "root/WMI" -Query "SELECT * FROM MSNdis_PhysicalMediumType"

最初のクエリは、アダプターのリストを提供する一般的な方法です。前述のように、他の多くの選択基準によって、有効な物理デバイスのみを含めるようにフィルタリングできます。

2 番目のクエリは、プロパティを持つ WMI オブジェクトを返しますNdisPhysicalMediumType。リンクされたサイトによると、値は WiFiの場合は9、Bluetoothの場合は10、イーサネットおよびその他のほとんどのアダプターの種類の場合は0です。

これら 2 つのクエリを結合するには、最初のクエリのNameorプロパティと2 番目のクエリのプロパティを使用してスクリプトで手動で行う必要があるようです。DescriptionInstanceName

于 2015-06-11T16:31:48.823 に答える