Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取机器&x27;s MAC地址——好的解决方案?_C++_Mac Address_Winpcap - Fatal编程技术网

C++ 获取机器&x27;s MAC地址——好的解决方案?

C++ 获取机器&x27;s MAC地址——好的解决方案?,c++,mac-address,winpcap,C++,Mac Address,Winpcap,我听说用我目前的winpcap库是不可能的 这是真的吗?我在网上看到很多例子,但随后评论说“这不管用” 获取本地计算机MAC地址的最佳方法是什么?如果计算机有>1个NIC,则没有“该”MAC地址。您可以使用WMI查询此信息,有关更多详细信息,一种常见的方法是使用UUID中的位,但这并不完全可靠。例如,即使在没有网络适配器的机器上,它也会返回一个值 幸运的是,有一种方法可以在任何合理的最新版本的Windows上可靠地工作。MSDN说它只能追溯到Windows 2000,但如果内存可用,它也可以在N

我听说用我目前的winpcap库是不可能的

这是真的吗?我在网上看到很多例子,但随后评论说“这不管用”


获取本地计算机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中有很多编译器错误