Как получить стабильный MAC-адрес для ПК? - PullRequest
6 голосов
/ 29 августа 2009

Мы используем MAC-адреса для идентификации компьютеров как лицензированных для запуска программного обеспечения. (Не заботьтесь о спуфинге MAC; лицензии трудно получить :) ПК могут иметь несколько контроллеров Ethernet (нас также не волнует случай, когда его нет; мы не встречали такую ​​машину через 5 лет) и так возникает проблема с надежным выбором стабильной один.

Я думал, что у нас это было прибито, но, очевидно, нет. Мы используем GetAdaptersInfo из модуля iphlpapi Microsoft SDK и пройдитесь по списку. Мы используем последний адаптер в предположительно материнской плате Контроллер Ethernet. Увы, мы столкнулись с Thinkpad, который появляется изменить последний контроллер в зависимости от того, подключен он или нет.

Есть ли способ надежно найти MAC-адрес для материнской платы Контроллер Ethernet в системе, если он существует? И для тех Материнские платы, которые имеют 2 или более, выбрать одну из них, которая стабильна? [Если бы я знал, что набор был на материнской плате, я мог бы легко выбрать самый низкий адрес MAC].

Ответы [ 5 ]

3 голосов
/ 29 августа 2009

Это грязная проблема. Как вы справляетесь с виртуализацией? На моей машине есть несколько адаптеров Ethernet, только один из которых на самом деле аппаратный. И все мои виртуальные машины имеют программные MAC-адреса. И, если я действительно этого хочу, я могу настроить несколько виртуальных машин на разных компьютерах с одинаковым MAC-адресом (конечно, не в одной сети).

2 голосов
/ 29 августа 2009

Не думаю, что существует какой-либо надежный способ определить, какой интерфейс является «стабильным». Конечно, не без углубления в детали оборудования.

Но что если вы подойдете к этому по-другому? Пользователь может выбрать интерфейс из списка при установке, что, вероятно, не очень удобно для пользователя. Или просто запишите все MAC-адреса в системе и выполните проверку подлинности, пока один еще активен.

Также для справки пользователь может изменить порядок, который возвращает GetAdaptersInfo, из меню «Дополнительные настройки» в разделе «Сетевые подключения».

2 голосов
/ 29 августа 2009

Нет - надежного способа сделать это не существует. USB-ключи дешевы и просты - используйте их.

Раньше я получал «удовольствие» от использования программного обеспечения, заблокированного MAC, и все, что я могу сказать, - не делайте этого.

1 голос
/ 09 сентября 2014

Я тоже столкнулся с той же проблемой и нашел другой подход здесь .

Windows хранит описание физических сетевых карт в реестре по адресу HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkCards. Это же описание также указано в элементе «Описание» структуры IP_ADAPTER_INFO. Поэтому я думаю, что могу проверить, фигурирует ли это значение в реестре, чтобы определить, принадлежит ли MAC-адрес физической сетевой карте или нет.

1 голос
/ 29 августа 2009

У меня нет решения, но может быть другая проблема:

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

...