2015-05-07 9 views
5

ich den folgenden Code bin mit der MAC-Adresse erhalten:Wie bekomme ich die gleiche MAC-Adresse?

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]); 

Wenn jedoch der Computer viele Netzwerkadapter verfügt (zB Ethernet und WiFi), dann bekomme ich eine andere jedes Mal wenn ich diesen Code aufrufen MAC-Adresse.

Gibt es eine Möglichkeit, immer die gleiche MAC-Adresse zu erhalten (zum Beispiel: Ethernet).

+0

Ich bekomme immer das Gleiche. – Adrian

+1

@ addy2012 Sorry, ich meinte, Sie könnten irgendwann eine andere MAC-Adresse bekommen, und nicht sofort. – John

+0

Irgendwann? Wie meinst Du das? – Adrian

Antwort

3

Da GetAdaptersInfo Verfahren fast so viele Informationen wie IPCONFIG/ALL (einschließlich DHCP-Server, Gateway, IP-Adressliste, Subnet-Mask und WINS-Server) enthält Sie verwenden können. Es zählt auch alle NICs auf dem PC, auch wenn sie nicht in gültige Netzwerken verbunden sind (aber die NICs haben „freigegeben“ in Windows werden)

Probe, drucken alle Schnittstellen:

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); 
} 

Sie können den Adaptername speichern und dann in den nächsten Aufrufen vergleichen, um sicherzustellen, dass die MAC des angegebenen Adapters abgerufen wird.

Schauen Sie sich hier für IP_ADAPTER_INFO Struktur: https://msdn.microsoft.com/en-us/library/windows/desktop/aa366062%28v=vs.85%29.aspx

-Code ab: http://www.codeguru.com/cpp/i-n/network/networkinformation/article.php/c5451/Three-ways-to-get-your-MAC-address.htm

1

Ich glaube Aufzählung der Netzwerkadapters Information durch das Windows-Betriebssystem auf der Priorität des Netzwerkadapters hängt. Die Prioritäten von Netzwerkadaptern können angezeigt, bearbeitet werden, indem sie zu

Open Network and Sharing Center -> Adaptereinstellungen ändern -> Erweitert [Menüleiste aktivieren, falls nicht sichtbar] -> Erweiterte Einstellungen. Man kann die Prioritäten des Netzwerkadapters bearbeiten. enter image description here

Verwandte Themen