我听说用我当前的 winpcap 库是不可能的。
这是真的吗?我在网上看到很多例子,但随后评论说“这不起作用”。
获取本地机器的 MAC 地址的最佳方法是什么?
我听说用我当前的 winpcap 库是不可能的。
这是真的吗?我在网上看到很多例子,但随后评论说“这不起作用”。
获取本地机器的 MAC 地址的最佳方法是什么?
一种常见的方法是使用 UUID 中的位,但这并不完全可靠。例如,即使在没有网络适配器的机器上,它也会返回一个值。
幸运的是,有一种方法可以在任何相当新的 Windows 版本上可靠地工作。MSDN 说它只能追溯到 Windows 2000,但如果没有记忆,它也可以在 NT 4 上工作,从 SP 5 开始,以防有人仍在使用 NT 4。
#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>
int main() {
IP_ADAPTER_INFO *info = NULL, *pos;
DWORD size = 0;
GetAdaptersInfo(info, &size);
info = (IP_ADAPTER_INFO *)malloc(size);
GetAdaptersInfo(info, &size);
for (pos=info; pos!=NULL; pos=pos->Next) {
printf("\n%s\n\t", pos->Description);
printf("%2.2x", pos->Address[0]);
for (int i=1; i<pos->AddressLength; i++)
printf(":%2.2x", pos->Address[i]);
}
free(info);
return 0;
}
请原谅古老的C代码...
如果计算机的 NIC 大于 1,则没有“该”MAC 地址之类的东西。您可以使用 WMI 查询此信息,http ://techsupt.winbatch.com/TS/T000001002F19.html了解更多详细信息
IPHelper 的 GetAdaptersAddresses()
http://msdn.microsoft.com/en-us/library/aa365915%28VS.85%29.aspx
我在 WinCE 上成功使用以获得 operstatus,也应该使用 MAC 地址。