• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ローカルエリア接続用イーサネットアダプタのMACアドレスを取得したい)

ローカルエリア接続用イーサネットアダプタのMACアドレスを取得する方法

このQ&Aのポイント
  • コマンドプロンプトで ipconfig /all を実行し、出力される情報の中から「イーサネット アダプタ ローカル エリア接続」のタイトルで表示されるアダプタのMACアドレスを取得する方法について説明します。
  • MACアドレスを取得する方法として、NetBIOSを使う方法、IP Helper APIのGetIfTable関数を使う方法、IP Helper APIのGetAdaptersInfo関数を使う方法を試しました。NetBIOSを使う方法ではアダプタの種類は判別できず、IP Helper APIのGetIfTable関数とGetAdaptersInfo関数ではイーサネットアダプタだけを選び出すことはできますが、複数のイーサネットアダプタが存在する場合に「ローカルエリア接続」のアダプタだけを選び出す情報は得られません。
  • LANに接続していない状態(ケーブルを外した状態)でMACアドレスを取得する方法についての情報はありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • Yorisin
  • ベストアンサー率54% (364/663)
回答No.1

あまりスマートな方法ではないですが、パっと思い浮かんだので・・・。 getmacコマンドとfindコマンドを組み合わせて望みのアダプタのみのMACアドレスが取得できます。 アダプタ名などの余計な情報も一緒に出てきてしまいますが、 とりあえず値を取ってしまって不要な部分を削除するってのはどうでしょうか? 取りあえず、下のバッチで特定のアダプタのみの結果が表示されます。 (findコマンドの後の""の中がアダプタ名) @echo off getmac /v|find "ローカル エリア接続" pause

aaaughhh
質問者

お礼

大変遅くなりましたが、改めてお礼申し上げます。ありがとうございました。

aaaughhh
質問者

補足

早速のご回答,ありがとうございます。 残念ながら,getmacコマンドは Windows 98 や 2000 では使えないようですし,プログラムの中から呼び出すので,コマンドプロンプト利用というのも苦しいです。「ローカル エリア接続」という文字列が機種によって,あるいは今後のWindowsのバージョンで変わってしまう可能性もあるし。 ちなみに,「ローカル エリア接続」という文字列がレジストリのある場所に格納されている(これを変えると ipconfig コマンドの表示も変わる)ことは突き止めておりますので,レジストリからこの文字列を読み出し,これとすべてのアダプタの FriendlyName(GetAdaptersAddresses 関数が返す IP_ADAPTER_ADDRESSES 構造体のメンバ)とを比較して,一致するアダプタのMACアドレスを取得するというアイデアが浮かんだのですが,レジストリの構造が機種やWindowsのバージョンによらずに一定とは限らないだろうから,これも使えないだろうな・・・などと考えております。

すると、全ての回答が全文表示されます。

関連するQ&A