我使用以下代码获取MAC地址:
IP_ADAPTER_INFO adpInfo[16];
DWORD len = sizeof(adpInfo);
GetAdaptersInfo(adpInfo, &len );
printf("%02x%02x%02x%02x%02x%02x", adpInfo[0].Address[0], adpInfo[0].Address[1], adpInfo[0].Address[2], adpInfo[0].Address[3], adpInfo[0].Address[4], adpInfo[0].Address[5]);
Run Code Online (Sandbox Code Playgroud)
但是,如果计算机有许多网络适配器(例如:以太网和WiFi),那么每次调用此代码时,我都会获得不同的MAC地址.
有没有办法始终获得相同的MAC地址(例如:以太网).
由于 GetAdaptersInfo 方法包含几乎与IPCONFIG /ALL一样多的信息(包括 DHCP 服务器、网关、IP 地址列表、子网掩码和 WINS 服务器),因此您可以使用它。它还枚举 PC 上的所有 NIC,即使它们未连接到有效网络(但 NIC 必须在 Windows 中“启用”)
样例,打印所有接口:
static void GetMACaddress(void)
{
IP_ADAPTER_INFO AdapterInfo[16];
DWORD dwBufLen = sizeof(AdapterInfo);
DWORD dwStatus = GetAdaptersInfo(AdapterInfo, &dwBufLen);
assert(dwStatus == ERROR_SUCCESS);
PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
do {
PrintMACaddress(pAdapterInfo->Address);
pAdapterInfo = pAdapterInfo->Next;
}
while(pAdapterInfo);
}
Run Code Online (Sandbox Code Playgroud)
您可以保存AdapterName,然后在下次调用中进行比较,以确保检索到指定适配器的 MAC。
查看此处的IP_ADAPTER_INFO结构:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366062%28v=vs.85%29.aspx
| 归档时间: |
|
| 查看次数: |
1263 次 |
| 最近记录: |