2009-05-05 16 views
14

Sto giocando intorno con il recupero l'indirizzo MAC della scheda di rete - ci sono una varietà di modi per farlo, questo articolo copre le più comuni:Come ottenere l'hardware indirizzo MAC su Windows

http://www.codeguru.com/Cpp/I-N/network/networkinformation/article.php/c5451

attualmente sto usando il metodo GetAdaptersInfo, che sembra il più a prova di proiettile, ma se l'indirizzo MAC è stato impostato tramite il registro di sistema:

http://www.mydigitallife.info/2008/06/30/how-to-change-or-spoof-mac-address-in-windows-xp-vista-server-20032008-mac-os-x-unix-and-linux/

Poi si riporta l'indirizzo MAC che è stato c impiccato a L'unico modo in cui ho trovato il vero MAC è quello di rimuovere la voce di registro, riavviare la NIC, ottenere il MAC tramite GetAdaptersInfo, quindi sostituire la voce di registro e riavviare la NIC. Mentre svolge il lavoro, è difficilmente trasparente per l'utente.

Esistono altri metodi con cui chiunque abbia familiarità, che restituirà l'hardware MAC indipendentemente da ciò su cui è impostato il registro? Idealmente mi piacerebbe una soluzione che funzioni su XP in su.

Grazie in anticipo!

risposta

2

La mia ipotesi è che nell'articolo CodeGuru collegato, la soluzione Miniport è in grado di superare il problema che descrivi, anche se doloroso da implementare. La ragione per cui penso sia che ho usato la soluzione GetAdaptersInfo in passato e ho notato che l'indirizzo MAC cambierà senza riavvio quando viene aggiunto un adattatore, ad es. un adattatore Bluetooth che fornisce servizi PAN.

Forse piuttosto che riavviare dopo aver modificato l'impostazione del Registro di sistema, è possibile provare a interrompere e riavviare i servizi di rete pertinenti. Potresti facilmente controllarlo manualmente prima di cercare una soluzione programmatica.

(n.b. quanto sopra è tutto un lavoro da indovinare.Se si prova e funziona, forse aggiungere un post per coloro che cercano di fare lo stesso in futuro).

+0

Quindi sembra che la soluzione Miniport funzioni, ma ha un'alta probabilità di non essere supportata in futuro. Ho trovato questo link dal guru NDIS oltre a PCUSA: http://www.pcausa.com/Utilities/macaddr2.htm Se si modifica il loro esempio per interrogare OID_802_3_PERMANENT_ADDRESS invece di OID_802_3_CURRENT_ADDRESS, restituisce l'indirizzo hardware. – Mark

+0

@ Mark - alcuni quando negli ultimi 8 anni, quel collegamento è diventato obsoleto. :( –

0

analizzare l'output di ipconfig /all

+0

ipconfig/all (almeno su Vista) mostrava solo l'indirizzo MAC dal registro. – Mark

0

È possibile utilizzare WMI per enumerare le istanze Win32_NetworkAdapter e guardare la proprietà MACAddress. Il problema principale di questa tecnica è trovare l'istanza dell'adattatore appropriata se sono installati più adattatori attivi, ad es. su un laptop che ha anche una connessione wireless.