C++ 获取机器&x27;s MAC地址——好的解决方案?
我听说用我目前的winpcap库是不可能的 这是真的吗?我在网上看到很多例子,但随后评论说“这不管用”C++ 获取机器&x27;s MAC地址——好的解决方案?,c++,mac-address,winpcap,C++,Mac Address,Winpcap,我听说用我目前的winpcap库是不可能的 这是真的吗?我在网上看到很多例子,但随后评论说“这不管用” 获取本地计算机MAC地址的最佳方法是什么?如果计算机有>1个NIC,则没有“该”MAC地址。您可以使用WMI查询此信息,有关更多详细信息,一种常见的方法是使用UUID中的位,但这并不完全可靠。例如,即使在没有网络适配器的机器上,它也会返回一个值 幸运的是,有一种方法可以在任何合理的最新版本的Windows上可靠地工作。MSDN说它只能追溯到Windows 2000,但如果内存可用,它也可以在N
获取本地计算机MAC地址的最佳方法是什么?如果计算机有>1个NIC,则没有“该”MAC地址。您可以使用WMI查询此信息,有关更多详细信息,一种常见的方法是使用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;
}
#包括
#包括
#包括
int main(){
IP_适配器_INFO*INFO=NULL,*pos;
DWORD大小=0;
GetAdapterInfo(信息和大小);
信息=(IP适配器信息*)malloc(大小);
GetAdapterInfo(信息和大小);
用于(pos=info;pos!=NULL;pos=pos->Next){
printf(“\n%s\n\t”,位置->说明);
printf(“%2.2x”,位置->地址[0]);
for(int i=1;i长度;i++)
printf(“:%2.2x”,位置->地址[i]);
}
免费(信息);
返回0;
}
请原谅古老的C代码…iPhoneper的GetAdapterAddresses()
我在WinCE上成功使用以获取operstatus,也应使用MAC地址。什么是好的解决方案?如果你的意思是为授权生成一些唯一的计算机标识符,我会说它不应该被依赖。当用户更换网卡,有2张网卡,没有网卡时会发生什么?这是一个单独的项目,但在使用winpcap的项目中,我试图在其中使用它,netioapi.h中有很多编译器错误