dポイントプレゼントキャンペーン実施中!

こんにちは、
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;
}

A 回答 (2件)

自分では試してないので自信なしですが、


このあたり↓が参考になるかも(?)知れません。
http://www003.upp.so-net.ne.jp/geek/programming/ …

参考URL:http://www003.upp.so-net.ne.jp/geek/programming/ …

この回答への補足

z64423さんの方法で試した結果うまくいきました。ありがとうございました。PlatFormSDKは使ったことが無かったので、インストールするのに手間取りましたが何とか目的の動作を得ることが出来ました。WIN98以降対応のようですので欲を言えば98よりまえの環境ではどうすればいいのかなあと言うところが気になっています。

補足日時:2005/04/18 11:53
    • good
    • 0
この回答へのお礼

ありがとうございます。早速、試してみます。

お礼日時:2005/04/16 20:21

蛇足ながら、補足に対して。



> WIN98以降対応のようですので欲を言えば98より
> まえの環境ではどうすればいいのかなあと言うところが
> 気になっています。

Win98より前の環境、というのは、マイクロソフトのサポート外になってしまうので、昔のWin32 SDKなどを探すしかないです。また、昔のWin32SDKはマイクロソフトは絶対に配布してくれませんので、既に持ってる人からもらうしかないです。(なお、再配布は不許可だったはずなので、これまた違法です。)

ということなので、昔の環境は無視して結構かと思います。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。そうですか、マクロソフトのサポート外ですか。Win32SDKはもしかしたらあるかもしれないので、時間を作って探してみます。現在のプロジェクトではwin95,winNt4.0は考慮しなくてよいという上司の判断が下されましたので、とりあえず、現状で進めていこうと思います。

お礼日時:2005/04/19 07:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!