2009-05-05 11 views
14

gram około z pobierania adresu MAC z karty sieciowej - istnieje wiele sposobów, aby dostać to, artykuł ten dotyczy najczęściej:Jak zdobyć sprzętowy adres MAC na Windows

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

obecnie używam metody GetAdaptersInfo, która wydaje się najbardziej kuloodporny, ale jeśli adres MAC został ustawiony za pomocą rejestru:

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/

Następnie informuje, że adres MAC że został c powieszony do. Jedynym sposobem znalezienia prawdziwego adresu MAC jest usunięcie wpisu rejestru, ponowne uruchomienie karty NIC, pobranie MAC przez GetAdaptersInfo, a następnie zastąpienie wpisu rejestru i ponowne uruchomienie karty NIC. Mimo że wykonuje swoją pracę, nie jest ona dla użytkownika zbyt przejrzysta.

Czy istnieją inne metody, które ktoś zna, które zwrócą sprzętowy adres MAC bez względu na ustawienia rejestru? Idealnie chciałbym rozwiązania, które działa na XP na górze.

Z góry dziękuję!

Odpowiedz

2

Domyślam się, że w dołączonym artykule CodeGuru rozwiązanie Miniport prawdopodobnie rozwiąże problem, który opisujesz, choć bolesny w implementacji. Powodem, dla którego myślę, że sam używałem rozwiązania GetAdaptersInfo w przeszłości, i zauważyłem, że adres MAC zmieni się bez restartu po dodaniu adaptera, np. adapter Bluetooth zapewniający usługi PAN.

Być może zamiast ponownego uruchamiania po zmianie ustawienia rejestru, można spróbować zatrzymać i ponownie uruchomić odpowiednie usługi sieciowe. Można łatwo sprawdzić to ręcznie przed szukaniem rozwiązania programowego.

(n.b. powyższe wszystko jest zgadywaniem. Jeśli spróbujesz i działa, być może dodaj post dla tych, którzy próbują zrobić to samo w przyszłości).

+0

Wygląda na to, że rozwiązanie Miniport działa, ale ma duże prawdopodobieństwo, że nie będzie obsługiwane w przyszłości. Znalazłem ten link z guru NDIS na co PCUSA: http://www.pcausa.com/Utilities/macaddr2.htm Jeśli modyfikować ich przykładem do kwerendy OID_802_3_PERMANENT_ADDRESS zamiast OID_802_3_CURRENT_ADDRESS, zwraca adres sprzętowy. – Mark

+0

@Mark - niektóre, gdy w ciągu ostatnich 8 lat ten link stał się nieaktualny. :( –

0

Przetwarza wyjście ipconfig /all

+0

ipconfig/all (przynajmniej na Vista) wyświetlał tylko adres MAC z rejestru. – Mark

0

można użyć WMI wyliczyć Win32_NetworkAdapter instancje i spojrzeć na własność MACADDRESS. Głównym problemem związanym z tą techniką jest znalezienie odpowiedniej instancji adaptera, jeśli zainstalowano wiele aktywnych adapterów, np. na laptopie, który również ma połączenie bezprzewodowe.

Powiązane problemy