• ベストアンサー
  • 困ってます

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

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数2975
  • ありがとう数2

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

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

あまりスマートな方法ではないですが、パっと思い浮かんだので・・・。 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

  • GetAdapterInfoによりマックアドレスを取得したい。

    はじめまして、sandayu999と申します。 ネットワークアダプタの情報を取得するために GetAdapterInfo関数を使用しているのですが 返り値がエラーとなってしまいます。 環境はWindowsXPでCコンパイラは borlandのbcc32.exeを使用しております。 コンパイルは正常に行えました。 [mac.c] --------------------------------------- IP_ADAPTER_INFO adapterInfo; DWORD aiSize; GetAdaptersInfo(NULL,&aiSize); //サイズ取得 print("%d\n",GetAdaptersInfo( &adapterInfo, &aiSize )); 出力してみたところ、値が87(ERROR_INVALID_PARAMETER) となってしまいました。 どのような対処をしたら良いのかわからない状態です、どなたかアドバイスをよろしくお願いいたします。

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

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

  • iphlpapiのGetAdaptersInfoでNICのMacアドレスを取りたいのですが...

    こんにちは、 質問No.4996に関連して、VC++でiphlpapiのGetAdaptersInfoを使って、NICのMACアドレスを取得しようと考えています。WIN XP、WIN2000では、目的のアドレスが取得できるのですが、WIN98、WIN MEではNIC以外にPPP AdapterやAOL Adapterといった、ダイアルアップ用のアドレスも同時に取れてしまい、大変困っています。取得したものを見れば検討は付くのですがプログラム的により分ける方法が分かりません。確実にNICのMACアドレスだけを取得する方法はないでしょうか?NetBiosやiphlpapiの他の関数も検討しましたが、ネットワークが構築されていないPCから取得できるのはGetAdaptersInfoだけのようですので、出来ればこの関数を使って解決したいと考えています。どうか、よろしくお願いします。

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

    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と出てきて疎通が出来ないのでしょうか?

  • 増設によるローカルエリア接続の追加について

    会社のパソコンを会社と社宅に持ち運んで使用しています。会社の承認済みです。 会社も社宅もプライベートIPで、IPもDNSサーバも互いにかなり異なる数値です。 パソコンにはローカルエリア接続の設定(アイコン?)はひとつしかないので、逐一数値を変えるのが面倒なのですが、 例えば、USBのEthernetアダプタ等を増設すると、ローカルエリア接続のアイコンがもう一つ増え、会社と社宅の設定を入れておいて使い分けたりすることが出来るのでしょうか。

  • Macアドレスの取得方法

    こんにちは、 Macアドレスの取得方法で悩んでいます。 現在NetBiosを使った方法で取得する方法までは出来たのですが、ネットワークに接続していない環境も想定しているため、ネットワークカードが稼動していない場合取得が出来ないようです。色々調べて見ましたがこの方法しか見つかりませんでした。 どなたか、ネットワークに接続されていない(LANケーブルがつながっていない)PCのMacアドレスの取得方法をご存知の方いらしましたら、ご教授願います。 //NetBiosを使った取得のソースコードを以下に示します。 #include "stdafx.h" #include "Nb30.h" typedef struct _ASTAT_ {  ADAPTER_STATUS adapt; NAME_BUFFER NameBuff[30]; }ASTAT, * PASTAT; ASTAT Adapter; bool GetMacAddress(char* pMacAddress) { NCB Ncb; UCHAR uRetCode; // reset memset( &Ncb, 0, sizeof(Ncb) ); Ncb.ncb_command = NCBRESET; Ncb.ncb_lana_num = 0; uRetCode = Netbios( &Ncb ); // get memset( &Ncb, 0, sizeof (Ncb) ); Ncb.ncb_command = NCBASTAT; Ncb.ncb_lana_num = 0; strcpy( (char*)Ncb.ncb_callname, "*" ); Ncb.ncb_buffer = (UCHAR*)&Adapter; Ncb.ncb_length = sizeof(Adapter); uRetCode = Netbios( &Ncb ); if ( uRetCode == 0 ) { char strBuffer[12]; sprintf(strBuffer, "%02x%02x%02x%02x%02x%02x", Adapter.adapt.adapter_address[0], Adapter.adapt.adapter_address[1], Adapter.adapt.adapter_address[2], Adapter.adapt.adapter_address[3], Adapter.adapt.adapter_address[4], Adapter.adapt.adapter_address[5] ); strcpy(pMacAddress, strBuffer); return true; } return false; }

  • ローカルエリア接続「無効または接続なし」

    時々、ローカルエリア接続のアイコンに黄色い三角マークが 表示され「無効または接続なし」となったり、「ネットワークケーブルが 接続されていません」となりネットに繋がらなくなります。 こちらの環境ですが・・・ OS XP(SP3) フレッツ光ネクスト マンションタイプ ONU → PC1台と光電話に接続 ネットで調べたところ、いろいろ推定原因が出てきたので以下については 試してみました。 1・・・ローカルエリア接続を「有効→無効→有効」にする。 2・・・ローカルエリア接続を「修復」する。  3・・・システムの復元でネット開通以前の状態に戻し、ルーターを     再設定する。 4・・・ルーターの初期化。 5・・・ネットワークアダプタにエラーが出ていないか確認 6・・・LAN周りの接触不良の可能性があるため、LANケーブル・LANカード     ・LANドライバを新しくした。 7・・・PC・ルーター共「IPアドレスを自動取得にする」になっている     ことを確認。 8・・・PC・ルーターの電源OFF・ケーブル外し、十分時間を置いて     再接続。 9・・・コマンドプロンプト「ipconfig renew」 10・・・ウィルスソフト(AVAST)のアンインストール 11・・・念のためNTTにルーターの交換・点検をしてもらいました。     (結果ルーターの上流側には異常がないとのことでした。) 以上を行い、確実に切断の頻度は減ったものの先ほどPCを立ち上げたときにまた「無効または接続なし」になっていました。 (「有効→無効→有効」にして直りました。) 切断したときと正常なときのコマンドプロンプトのipconfigを 保存したのですが、読み方がわからないのでここから考えられる原因 があれば教えていただければと思います。 m( _ _ )m あとできることはOSの再インストールくらいでしょうか? ローカルエリア接続「無効または接続なし」の場合 (このとき、よくわかっていませんがpingというのも試してみました。) Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. D:\Documents and Settings\ky>ipconfig Windows IP Configuration Ethernet adapter ローカル エリア接続 2: Connection-specific DNS Suffix . : Autoconfiguration IP Address. . . : 169.254.236.85 Subnet Mask . . . . . . . . . . . : 255.255.0.0 IP Address. . . . . . . . . . . :fe80::21d:73ff:fee6:b504%5 Default Gateway . . . . . . . . . : 169.254.236.85 Tunnel adapter Teredo Tunneling Pseudo-Interface: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : fe80::ffff:ffff:fffd%4 Default Gateway . . . . . . . . . : D:\Documents and Settings\ky>ping 169.254.236.85 Pinging 169.254.236.85 with 32 bytes of data: Reply from 169.254.236.85: bytes=32 time<1ms TTL=128 Reply from 169.254.236.85: bytes=32 time<1ms TTL=128 Reply from 169.254.236.85: bytes=32 time<1ms TTL=128 Reply from 169.254.236.85: bytes=32 time<1ms TTL=128 Ping statistics for 169.254.236.85: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms D:\Documents and Settings\ky> Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. D:\Documents and Settings\ky>ipconfig Windows IP Configuration ローカルエリア接続「接続」の場合 Ethernet adapter ローカル エリア接続 2: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.1.2 Subnet Mask . . . . . . . . . . . : 255.255.255.0 IP Address. . . . . . . . . . . . : 2408:102:487d:0:a1c6:8f9f:398d:b6f6 IP Address. . . . . . . . . . . . : 2408:102:487d:0:21d:73ff:fee6:b504 IP Address. . . . . . . . . . . . : fe80::21d:73ff:fee6:b504%6 Default Gateway . . . . . . . . . : 192.168.1.1 fe80::21b:8bff:feee:438c%6 Tunnel adapter Teredo Tunneling Pseudo-Interface: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : fe80::ffff:ffff:fffd%4 Default Gateway . . . . . . . . . : D:\Documents and Settings\ky>

  • ローカルエリア接続の復元について

    よろしくお願いいたします。 現在PS3とのブリッジ接続を試みているのですが、上手く繋がらないため、いろいろ弄っているうちに、【ローカルエリア接続】のドライバを削除をしてしまったところ、表示されていた【ローカルエリア接続】のアイコンが消えてしまいました(当然なのですが、消してしまってから気が付きました)。 確か【ローカルエリア接続】に表示されていたアダプター名は「tap-windows adapter v9」だったと思うのですが、「デバイスマネージャー」の「ネットワークアダプター」の項を見ても「tap-windows adapter v9」という表示がなくどうして復元してよいものか分からず、困っております。 以上ですが、どなたかお詳しい方がおられましたらご教示頂ければ幸いです。 ※PCはlenovo G570でOSはWindows8.1です。 ※他にも必要な情報がありましたら、ご質問頂ければ可能な限りでお答えいたします。

  • ローカルエリア接続を削除しちゃった

    Windows7以上で、PCを親機としてWi-Fiを飛ばせると知り、試みている最中、「アダプターのオプションを変更する」の中で「ローカルエリア接続」を削除してしまいました…。 同じ所には、 Bluetoothネットワーク接続 Wi-Fi エリア内速度測定サイト サービス情報サイト インターネット接続 イーサネット が並んでいて、ネットは繋がっていて使える状態です。 どうしたら削除してしまった「ローカルエリア接続」を元に戻せますか? Windows8.1からWindows10にした状態 品名 ESPRIMO WH77/M 型番 FMVW 77MV 宜しくお願いします。 ※OKWaveより補足:「富士通FMV」についての質問です。