質問: ローカルエリア接続用イーサネットアダプタのmacアドレスを取得したい コマンドプロンプトで 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」が入っているものを除外するというような方法は使いたくありません。 よろしくお願い致します。
回答: あまりスマートな方法ではないですが、パっと思い浮かんだので・・・。 getmacコマンドとfindコマンドを組み合わせて望みのアダプタのみのmacアドレスが取得できます。 アダプタ名などの余計な情報も一緒に出てきてしまいますが、 とりあえず値を取ってしまって不要な部分を削除するってのはどうでしょうか? 取りあえず、下のバッチで特定のアダプタのみの結果が表示されます。 (findコマンドの後の""の中がアダプタ名) @echo off getmac /v|find "ローカル エリア接続" pause