2009-05-05 3 views
14

Ich spiele um mit dem Abrufen der MAC-Adresse der Netzwerkkarte bekommen - es gibt eine Vielzahl von Möglichkeiten, um es zu bekommen, erstreckt sich dieser Artikel die häufigste:Wie Hardware-MAC-Adresse unter Windows

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

ich verwende derzeit die GetAdaptersInfo Methode, die die meisten kugelsicher scheint, aber wenn die MAC-Adresse über die Registrierung festgelegt worden:

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/

Dann meldet er die MAC-Adresse, dass es c gewesen erhängt an. Die einzige Möglichkeit, die richtige MAC zu erhalten, besteht darin, den Registrierungseintrag zu entfernen, die Netzwerkkarte neu zu starten, den MAC über GetAdaptersInfo zu erhalten, dann den Registrierungseintrag zu ersetzen und die Netzwerkkarte neu zu starten. Während es die Arbeit erledigt, ist es für den Benutzer kaum transparent.

Gibt es noch andere Methoden, mit denen jeder vertraut ist, die die Hardware-MAC zurückgeben, unabhängig davon, was die Registrierung festgelegt ist? Im Idealfall möchte ich eine Lösung, die auf XP funktioniert.

Vielen Dank im Voraus!

Antwort

2

Meine Vermutung ist, dass die Miniport-Lösung in dem verknüpften CodeGuru-Artikel das Problem, das Sie beschreiben, wahrscheinlich überwinden wird, wenn auch schmerzhaft zu implementieren. Der Grund dafür ist meiner Meinung nach, dass ich die GetAdaptersInfo-Lösung in der Vergangenheit selbst verwendet habe und festgestellt habe, dass sich die MAC-Adresse ohne Neustart ändert, wenn ein Adapter hinzugefügt wird, z. ein Bluetooth-Adapter, der PAN-Dienste bereitstellt.

Vielleicht statt nach dem Ändern der Registrierungseinstellung neu zu starten, könnten Sie versuchen, die relevanten Netzwerkdienste zu stoppen und neu zu starten. Sie können dies leicht manuell überprüfen, bevor Sie nach einer programmatischen Lösung suchen.

(n.b. die oben genannten ist alles raten Arbeit. Wenn Sie es versuchen und es funktioniert, vielleicht fügen Sie einen Beitrag für diejenigen, die versuchen, das gleiche in Zukunft tun).

+0

Es sieht also so aus, als ob die Miniport-Lösung funktioniert, hat aber eine hohe Wahrscheinlichkeit, dass sie nicht unterstützt wird. Ich fand diesen Link von den NDIS-Gurus bei PCUSA über: http://www.pcausa.com/Utilities/macaddr2.htm Wenn Sie ihr Beispiel ändern OID_802_3_PERMANENT_ADDRESS statt OID_802_3_CURRENT_ADDRESS abzufragen, ist es die Hardware-Adresse zurückgibt. – Mark

+0

@Mark - einige, wenn in den letzten 8 Jahren diese Verbindung abgestanden ist. :( –

0

Analysieren Sie die Ausgabe von ipconfig /all

+0

ipconfig/all (mindestens auf Vista) nur die MAC-Adresse aus der Registrierung angezeigt. – Mark

0

Sie WMI verwenden, können die Win32_NetworkAdapter Instanzen und Blick auf die Eigenschaft MACAddress aufzuzählen. Das Hauptproblem bei dieser Technik besteht darin, die geeignete Adapterinstanz zu finden, wenn mehrere aktive Adapter installiert sind, z. auf einem Laptop, der auch eine drahtlose Verbindung hat.