- ベストアンサー
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; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
自分では試してないので自信なしですが、 このあたり↓が参考になるかも(?)知れません。 http://www003.upp.so-net.ne.jp/geek/programming/iphlpapi/index.html
その他の回答 (1)
- rentahero
- ベストアンサー率53% (182/342)
蛇足ながら、補足に対して。 > WIN98以降対応のようですので欲を言えば98より > まえの環境ではどうすればいいのかなあと言うところが > 気になっています。 Win98より前の環境、というのは、マイクロソフトのサポート外になってしまうので、昔のWin32 SDKなどを探すしかないです。また、昔のWin32SDKはマイクロソフトは絶対に配布してくれませんので、既に持ってる人からもらうしかないです。(なお、再配布は不許可だったはずなので、これまた違法です。) ということなので、昔の環境は無視して結構かと思います。
お礼
ご回答、ありがとうございます。そうですか、マクロソフトのサポート外ですか。Win32SDKはもしかしたらあるかもしれないので、時間を作って探してみます。現在のプロジェクトではwin95,winNt4.0は考慮しなくてよいという上司の判断が下されましたので、とりあえず、現状で進めていこうと思います。
お礼
ありがとうございます。早速、試してみます。
補足
z64423さんの方法で試した結果うまくいきました。ありがとうございました。PlatFormSDKは使ったことが無かったので、インストールするのに手間取りましたが何とか目的の動作を得ることが出来ました。WIN98以降対応のようですので欲を言えば98よりまえの環境ではどうすればいいのかなあと言うところが気になっています。