为什么我用Netbios取MAC有时有某台机器取得的与ipconfig -all中看到的不一样?大侠赐教!

leotam 2002-11-29 11:13:07
在大部分时间,大部分的机器用Netbios取得的MAC是正常的,
跟用ipconfig -all看到的是一样,但有时候会出现,取得的MAC
和ipconfig -all看到的是不一样的!而且感觉没规律,很烦阿!
希望那位大侠不吝赐教阿,当是救救我啦!分一定给!
客户对这个很不满意阿,我快死了!help!
...全文
104 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
playguy 2003-02-25
  • 打赏
  • 举报
回复
可以去这里看一看,有完整的解决方案,绝对实用:
http://www.aslike.net
warton 2002-12-02
  • 打赏
  • 举报
回复
关注
invalid 2002-11-30
  • 打赏
  • 举报
回复
不一样,是那个对呢?
KingOf007 2002-11-30
  • 打赏
  • 举报
回复
不会...顶一下
leotam 2002-11-30
  • 打赏
  • 举报
回复
kingfish(八百里秦川@龙城异客), 你的办法会取得好几个地址的,
只有一个网卡的情况下!而且正确的MAC放的位置不一定是第一个!

shadowstar(天作棋盘星作子,谁人敢下?)
机器都是一个网卡!但就不是每个机器都不对,而且机器重启之后
可能就正常了!
shadowstar 2002-11-30
  • 打赏
  • 举报
回复
机器有几块网卡?

如果是多块的话有可能取的不同。
kingfish 2002-11-30
  • 打赏
  • 举报
回复
#include <nb30.h>
#include <windows.h>
#include <lmwksta.h>
#include <lmapibuf.h>
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{
unsigned char MACData[8]; // Allocate data structure
// for MAC (6 bytes needed)
WKSTA_TRANSPORT_INFO_0 *pwkti; // Allocate data structure
// for NetBIOS
DWORD dwEntriesRead;
DWORD dwTotalEntries;
BYTE *pbBuffer;

// Get MAC address via NetBIOS's enumerate function
NET_API_STATUS dwStatus = NetWkstaTransportEnum(
NULL, // [in] server name
0, // [in] data structure to return
&pbBuffer, // [out] pointer to buffer
MAX_PREFERRED_LENGTH, // [in] maximum length
&dwEntriesRead, // [out] counter of elements
// actually enumerated
&dwTotalEntries, // [out] total number of elements
// that could be enumerated
NULL); // [in/out] resume handle

pwkti = (WKSTA_TRANSPORT_INFO_0 *)pbBuffer; // type cast the buffer

for(DWORD i=1; i< dwEntriesRead; i++) // first address is
// 00000000, skip it
{ // enumerate MACs & print
swscanf((wchar_t *)pwkti[i].wkti0_transport_address,
L"%2hx%2hx%2hx%2hx%2hx%2hx",
&MACData[0],
&MACData[1],
&MACData[2],
&MACData[3],
&MACData[4],
&MACData[5]);
}
// Release pbBuffer allocated by above function
dwStatus = NetApiBufferFree(pbBuffer);



char macAddr[14];
sprintf(macAddr,"%02X-%02X-%02X-%02X-%02X-%02X\n",
MACData[0], MACData[1], MACData[2], MACData[3], MACData[4], MACData[5]);

Edit1->Text = macAddr;


}
//---------------------------------------------------------------------------

没那么多机器试,你自己试试
kingfish 2002-11-30
  • 打赏
  • 举报
回复
有篇文章你可以看看

http://www.codeguru.com/network/GetMAC.html
大大怪老张 2002-11-30
  • 打赏
  • 举报
回复
不会,帮你up
leotam 2002-11-30
  • 打赏
  • 举报
回复
一般来说,用ipconfig -all 看到的是一直都没变的,
所以个人认为ipconfig -all的是对的!
因为我就是要他不变阿,这样才唯一嘛!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧