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

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

ローカルエリア接続用イーサネットアダプタの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」が入っているものを除外するというような方法は使いたくありません。 よろしくお願い致します。

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

  • ベストアンサー
  • 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

  • ローカルエリア接続とワイヤレスネットワーク接続

    OSはXP proです。 ローカルエリア接続にはLANケーブルにてインターネットへ接続してます。 ワイヤレスネットワーク接続は他のPCと共有接続(アドホック/クライアント側)です。 ローカルとワイヤレスを同時に使用するとワイヤレスでの共有が出来なくなります。 ローカルでのインターネットは使用可能です。 LANケーブルを抜いてワイヤレス接続のみにすると共有出来るようになります。 ローカルとワイヤレス同時に使用したいのですが設定などで出来るようになるでしょうか? ちなみにipconfigの内容は Ethernet adapter ローカル エリア接続: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.0.6 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.0.1 Ethernet adapter ワイヤレス ネットワーク接続: Connection-specific DNS Suffix . : mshome.net IP Address. . . . . . . . . . . . : 192.168.0.48 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.0.1 共にTCP/IPは自動的に取得するです。

  • Ethernet adapter ローカル エリア接続: Media

    Ethernet adapter ローカル エリア接続: Media State . . . . . . . . . . . : Media disconnectedと出てきてVM上のOSの共有フォルダが使えません。 また、OSはXP PROでドメインに参加しています。ローカルでログオンしています。 もちろんLANケーブルを繋げば戻りますが、ノートPCで外で使いますのでVM上のOSの共有フォルダが使えないと困ります。 DHCPにしても、手動でIP設定しても、再起動しても、戻りません。 前はDHCPにしていて、右下のアイコンは赤い×が出ていてもIPがあり問題ありませんでした。 手動でIP設定してもなぜ Media disconnectedと出てきて疎通が出来ないのでしょうか?

  • ネットワーク中の機器のMACアドレスの取得

    ルーターを越えないローカルネットワーク上で、接続されている機器全てのMACアドレスを取得する方法はありますか? ことのき、全ての機器は電源が入っていてイーサネットの通信を行え、かつ00:00:00:00~ff:ff:ff:ffまでの全てのMACアドレスを一つ一つ調べていくという方法以外の解答をお願いします。 また、イーサネット環境で知りたいのでIP層以上の通信を用いた解答もなるべく無しでお願いします。 よろしくお願いします。

  • コンピュータを再起動してもローカルエリア接続のIPアドレスが取得できません。

    コンピュータを再起動してもローカルエリア接続のIPアドレスが取得(更新?)できません。どうしたらいいのでしょうか。教えてください。

  • ローカルエリア接続

    自宅と会社で1台のPCを使用しようとする時、自宅ではIPアドレスはDHCPで自動取得、会社では決められたIPアドレスの場合、ローカルエリア接続のプロパティをその場所に応じて変更しなければなりません。もう少し簡単にIPアドレスを変更できる方法はないですか?よろしくお願いします。

  • パソコンのMACアドレスについて

    WINDOWS10です。 スタート → 設定 →ネットワークとインターネット →ネットワークのプロパティを表示 すると ・イーサーネット ・ローカルエリア接続1 ・ローカルエリア接続2 ・Wi-Hi ・Bluetoothネットワーク接続 と5種類が表示され それぞれ物理アドレス(MAC)が相違しています。 パソコンに無線LANが内蔵されており MACアドレスはそれの1個だけだと思っていたのですが 5種類もあるのは、なぜでしょうか? また、このパソコンの無線LANのMACアドレスは 上記のWi-Hiの所に表示されている物という 認識で合っていますでしょうか? よろしくお願いいたします。

  • Macアドレスを取得するには

    ローカルエリア内でユーザを認証するページを作っているのですが、認証してくるクライアントのMACアドレスをどうしても取得したいのですが、どうしたらいいのでしょうか?

  • ローカルエリア接続ができません

    ローカルエリア接続の修復ができません。 修復のボタンを押しても 「IPアドレスの取得」ができないとエラーを吐かれます。 環境は使用OSはXP、プロバイダはTEPCOひかり、セキュリティソフトはMcAfeeを使っています。

  • Vistaのローカルエリアが繋がりません・・・

    有線のネット接続ができません。Vistaのローカルエリア接続が識別されていないネットワークと出ており、動作状況のパケットの送信は数値があるんですが、受信が0のまま動きません。 以前XPではローカルエリアは普通に使えていたのですが、とある日突然使えなくなりシステム復元とリカバリをしてもダメだったため、サポートにはローカルエリアをつかさどるLANが故障してる可能性があると言われた末にVistaに買い換えたのが始まりです。 ノートパソコン【Lenovo G550】 Vista HomeBasic「サービスパック2」です ASAHIネットの旧TEPCOひかりを使用 ※親のXPのノートPCでは、上記プロバイダは利用可能でした ※ワイヤレスネットワークは普通に接続できています ※現在ウイルスソフトは削除済み ネットワーク共有センターには (識別されていないネットワーク)パブリックネットワーク 限られた接続 ローカルエリア接続 とあります ※PCとルーター等の電源切りから再起動は試しました ローカルエリア接続の状態を見ると IPv4接続: 限定 IPv6接続: 限定 診断の ・新しいIP設定を自動的に取得 ・ネットワークアダプタのリセット も試みましたが、ダメでした。 ネットワークと共有センターの ローカルエリアにのみ PCとネットワークの間に!マークがついていて ネットワークとインターネットの間には×マークがついてます プロパティの TCP/IPv4とTCP/IPv6は、すべて自動取得設定にしています コマンドプロンプトで ipconfig /all と打ったら Windows IP 構成 IP ルーティング有効 . . . . . . . . : いいえ WINS プロキシ有効 . . . . . . . . : いいえ ワイヤレスLAN項目は省略します。 イーサネット アダプタ ローカル エリア接続: 接続固有の DNS サフィックス . . . : 説明. . . . . . . . . . . . . . . : Broadcom NetLink (TM) Fast Ethernet 物理アドレス. . . . . . . . . . . : 00-26-22-03-01-0D DHCP 有効 . . . . . . . . . . . . : はい 自動構成有効. . . . . . . . . . . : はい リンクローカル IPv6 アドレス. . . . : fe80::a16f:f407:e9b4:411%10(優先) 自動構成 IPv4 アドレス. . . . . . : 169.254.4.17(優先) サブネット マスク . . . . . . . . : 255.255.0.0 デフォルト ゲートウェイ . . . . . : 0.0.0.0 DHCPv6 IAID . . . . . . . . . . . : 234890786 DHCPv6 クライアント DUID. . . . . . . . : 00-01-00-01-11-FB-CA-69-00-26-22-03 -01-0D DNS サーバー. . . . . . . . . . . : fec0:0:0:ffff::1%1 fec0:0:0:ffff::2%1 fec0:0:0:ffff::3%1 NetBIOS over TCP/IP . . . . . . . : 無効 と出ていて 更にこの下に Tunnel adapter ローカル エリア接続*: Tunnel adapter ローカル エリア接続* 2: Tunnel adapter ローカル エリア接続* 6: という項目がありました。 更にコマンドプロンプト で ipconfig /renewなど開放と更新をしても 表示されるのは下記の通り・・・ Windows IP 構成 インターフェイス ローカル エリア接続 の更新中にエラーが発生しました: DHCP サーバーに接続できません。要求がタイムアウトしました。 インターフェイス Loopback Pseudo-Interface 1 の解放中にエラーが発生しました: 指 定されたファイルが見つかりません。 5.6年PCに触れてきましたがインターネット接続関係のエラーは、初めてで専門用語もよくわからないものがいくつかあるので、何か可能性のある問題がありましたら、お手数ですがなるべく詳しくご教授頂ければ幸いです;

  • ipconfig/allでMACアドレスを調べてみたのですが、

    ipconfig/allでMACアドレスを調べてみたのですが、 インターネットアダプターローカルエリア接続と Wireless Lan adapterワイヤレスネットワーク接続の違いって何なのでしょうか? どちらにも物理アドレス(MAC)があるみたいです。 別々のメーカーのものみたいなのですが。 他にもTunnel adapterローカルエリア接続などに物理アドレスが付いているようですが、 これはそれぞれどのような役目を持っているのでしょうか? 親機として使ったアドレスと子機として使う場合のアドレスということ?