コマンドプロンプトで ipconfig /all を実行すると出てくる情報の中で,「イーサネット アダプタ ローカル エリア接続:」というタイトルで表示されるアダプタのMACアドレスを取得するプログラムを書きたいのです。
MACアドレスを取得する方法として,(1)NetBIOSを使う方法,(2)IP Helper APIのGetIfTable関数を使う方法,(3)IP Helper APIのGetAdaptersInfo関数を使う方法 を試しましたが,(1)はアダプタの種類は判別できず,(2)と(3)はイーサネットアダプタだけを選び出すことはできますが,複数のイーサネットアダプタが存在する場合(例えばBluetoothデバイス装着時),それらの中から「Bluetooth接続」のアダプタなどを除外して「ローカル エリア接続」のアダプタ『だけ』を選び出すための情報は得られないようです。
できれば,LANに接続していない状態(ケーブルを外した状態)で取得したいのですが,どなたかお知恵をお貸し下さい。
なお,「説明」の内容を使う方法,例えば GetAdaptersInfo関数のTIP_ADAPTER_INFO構造体のDescriptionメンバの文字列に「Bluetooth」が入っているものを除外するというような方法は使いたくありません。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
あまりスマートな方法ではないですが、パっと思い浮かんだので・・・。
getmacコマンドとfindコマンドを組み合わせて望みのアダプタのみのMACアドレスが取得できます。
アダプタ名などの余計な情報も一緒に出てきてしまいますが、
とりあえず値を取ってしまって不要な部分を削除するってのはどうでしょうか?
取りあえず、下のバッチで特定のアダプタのみの結果が表示されます。
(findコマンドの後の""の中がアダプタ名)
@echo off
getmac /v|find "ローカル エリア接続"
pause
この回答への補足
早速のご回答,ありがとうございます。
残念ながら,getmacコマンドは Windows 98 や 2000 では使えないようですし,プログラムの中から呼び出すので,コマンドプロンプト利用というのも苦しいです。「ローカル エリア接続」という文字列が機種によって,あるいは今後のWindowsのバージョンで変わってしまう可能性もあるし。
ちなみに,「ローカル エリア接続」という文字列がレジストリのある場所に格納されている(これを変えると ipconfig コマンドの表示も変わる)ことは突き止めておりますので,レジストリからこの文字列を読み出し,これとすべてのアダプタの FriendlyName(GetAdaptersAddresses 関数が返す IP_ADAPTER_ADDRESSES 構造体のメンバ)とを比較して,一致するアダプタのMACアドレスを取得するというアイデアが浮かんだのですが,レジストリの構造が機種やWindowsのバージョンによらずに一定とは限らないだろうから,これも使えないだろうな・・・などと考えております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- デスクトップパソコン 古ーいパソコン/Atheros AR2181 PCIe Gigabit LAN コントローラー 7 2022/09/07 12:58
- 固定IP Win11 アダプター設定変更にイーサネットが表示されない 1 2022/12/03 18:31
- モニター・ディスプレイ サーフェス laptopgoから外部モニター2つを接続しようと試みたところ、片方はpcについているt 3 2023/07/03 20:02
- モニター・ディスプレイ ノートpcにACアダプタ繋ぐと外部ディスプレイが映りません 2 2022/07/16 16:45
- マウス・キーボード キーボードについて2点教えて下さい 3 2023/04/18 07:00
- Bluetooth・テザリング BlueTooth機器の接続について 4 2023/01/22 03:15
- 固定IP iPhoneでのIPv4切り替え方法 3 2022/11/24 22:26
- Visual Basic(VBA) VBA で エクスプロー操作 1 2023/05/31 16:13
- その他(パソコン・周辺機器) デスクトップパソコンのbluetoothキーボードが、PC起動時に自動ペアリングしてくれない 1 2022/08/04 10:54
- サーバー ネットワークの構成に困っています 3 2023/07/05 11:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows11のセットアップ中の強...
-
従量制課金接続をオフにしたら...
-
Macbook AirをMac miniのモニタに
-
リモートデスクトップ接続での...
-
2PC、1モニタでデータ移行を行...
-
ローカルエリア接続の設定を2つ...
-
ドライブ名とドライブレターの...
-
WiiUのPROコントローラーを ス...
-
共有フォルダのエクセルファイ...
-
MacBook Proからプロジェクタに...
-
無線ランって隣の部屋の人に利...
-
リモートデスクトップ接続がで...
-
マルチモニターで2画面目が検...
-
リモートデスクトップ出来なく...
-
windows7にて、wifiを自動接続...
-
windowsで言う「ファイル名を指...
-
MacOS10.5 ターミナルからネッ...
-
ネットカフェでiPad。
-
iTune 作成終了しない
-
AirMacの設定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows11のセットアップ中の強...
-
従量制課金接続をオフにしたら...
-
リモートデスクトップ接続での...
-
Macbook AirをMac miniのモニタに
-
WiiUのPROコントローラーを ス...
-
【至急】OBSのデバイス一覧にHS...
-
共有フォルダのエクセルファイ...
-
リモートデスクトップのユーザ...
-
2013モデルのiMacをフリマアプ...
-
MacのFinderにiPhoneが表示され...
-
windowsで言う「ファイル名を指...
-
マルチモニターで2画面目が検...
-
win11リカバリー後設定なしでネ...
-
IISのFTPサービスでanonymousで...
-
MacBook AirからDIGAへアクセス...
-
外付けHDDのドライブレターが勝...
-
Windowsサーバの着信接続アイコ...
-
smbclientによるwindows共有フ...
-
Linux MintのWi-Fi設定について
-
ドライブ名とドライブレターの...
おすすめ情報