2015-05-07 15 views
5

Sto usando il seguente codice per ottenere l'indirizzo MAC:Come ottenere lo stesso indirizzo 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]); 

Tuttavia, se il computer ha molte schede di rete (ad esempio: Ethernet e WiFi), allora ogni volta che chiamo questo codice ottengo un diverso Indirizzo MAC.

C'è un modo per ottenere sempre lo stesso indirizzo MAC (ad esempio: Ethernet).

+0

Ho sempre lo stesso. – Adrian

+1

@ addy2012 Scusa, volevo dire che potresti ottenere un altro indirizzo MAC ad un certo punto, e non immediatamente. – John

+0

Ad un certo punto? In che modo vuoi dire? – Adrian

risposta

3

Poiché il metodo GetAdaptersInfo include quasi tutte le informazioni come IPCONFIG/ALL (inclusi server DHCP, gateway, elenco indirizzi IP, subnet mask e server WINS), è possibile utilizzarlo. Essa enumera anche tutte le schede di rete sul PC, anche se non si è connessi a reti valide (ma le schede di rete non devono essere "attivato" in Windows)

campione, stampa tutte le interfacce:

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

È possibile salvare AdapterName, quindi confrontarlo nelle chiamate successive per assicurarsi che venga recuperato il MAC dell'adattatore specificato.

Guardate qui per IP_ADAPTER_INFO struttura: https://msdn.microsoft.com/en-us/library/windows/desktop/aa366062%28v=vs.85%29.aspx

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

1

credo che l'enumerazione delle informazioni scheda di rete dal sistema operativo Windows dipende dalla priorità delle schede di rete. Le priorità degli adattatori di rete possono essere visualizzate, modificate passando a

Apri Centro connessioni di rete e condivisione -> Modifica impostazioni scheda -> Avanzate [Abilita barra menu se non visibile] -> Impostazioni avanzate. È possibile modificare le priorità della scheda di rete. enter image description here

Problemi correlati