Как получить MAC-адрес оборудования в Windows

Я играю с извлечением MAC-адреса из NIC - есть множество способов его получить, эта статья охватывает наиболее распространенные:

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

В настоящее время я использую метод GetAdaptersInfo, который кажется наиболее пуленепробиваемым, но если MAC-адрес установлен через реестр:

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/

Затем он сообщает MAC-адрес, на который он был изменен. Единственный способ, по которому я нашел фактический MAC, - удалить запись реестра, перезагрузить сетевой адаптер, получить MAC через GetAdaptersInfo, а затем заменить запись в реестре и перезагрузить сетевой адаптер. Хотя он выполняет свою работу, он практически не прозрачен для пользователя.

Есть ли какие-либо другие методы, с которыми кто-либо знаком, который вернет MAC-адрес оборудования независимо от того, какой реестр установлен? В идеале я бы хотел, чтобы решение, которое работает на XP, было.

Спасибо заранее!

Ответы

Ответ 1

Мое предположение заключается в том, что в связанной статье CodeGuru решение Miniport, вероятно, преодолеет описанную вами проблему, хотя и болезненную для реализации. Причина, по которой я думаю, в том, что я использовал решение GetAdaptersInfo в прошлом и заметил, что MAC-адрес изменится без перезагрузки при добавлении адаптера, например. адаптер Bluetooth, предоставляющий услуги PAN.

Возможно, вместо перезагрузки после изменения параметра реестра вы можете попробовать остановить и перезапустить соответствующие сетевые службы. Вы можете легко проверить это вручную, прежде чем искать программное решение.

(п.б. выше все работает над ошибкой. Если вы попробуете, и это работает, возможно, добавьте сообщение для тех, кто пытается сделать то же самое в будущем).

Ответ 2

Разберите вывод ipconfig /all

Ответ 3

Вы можете использовать WMI для перечисления Win32_NetworkAdapter экземпляров и посмотреть свойство MACAddress. Основная проблема с этим методом - найти соответствующий экземпляр адаптера, если у вас установлено несколько активных адаптеров, например. на ноутбуке, который также имеет беспроводное соединение.