Я пытаюсь (более или менее) однозначно идентифицировать систему для целей лицензирования. Я выбрал MAC-адрес бортового сетевого адаптера компьютера для этой задачи, так как я могу быть уверенным, что каждый cmputer, на котором работает это программное обеспечение, фактически имеет один, и это позволяет избежать повторной активации при изменении, например. жесткий диск.Как надежно получить MAC-адрес бортового сетевого адаптера компьютера?
У меня возникли проблемы с надежной идентификацией бортового сетевого адаптера.
Используя «Management Console» Win32_NetworkAdapterConfiguration, я могу получить множество MAC-адресов, включая адрес, который мне нравится, но я не нашел способа отличить бортовой от виртуальных адаптеров, установленных Windows или Virus Scanners. Этот список, похоже, заказан. Меня интересует MAC-адрес (на моей машине), указанный перед другими (настоящими) сетевыми адаптерами. (Список упорядочен по индексу интерфейса.)
Используя NetworkInterface.GetAllNetworkInterfaces()
, я думаю, что я могу определить реальные сетевые адаптеры с помощью фильтрации на .NetworkInterfaceType == NetworkInterfaceType.Ethernet
, но этот список, как представляется, неупорядоченными (дополнительная сетевая карта появляется перед onboards один).
Сначала используется второй способ получения списка реальных сетевых карт, а затем сортировка по порядку появления в первом списке надежного способа идентификации MAC-адреса, который я ищу? Может ли индекс интерфейса в первом списке изменить? Буду рад услышать ваши мысли!
Спасибо!
P.S .: Я знаю, что MAC-адрес можно довольно легко изменить, но я могу жить с этим. Я не могу жить с тем, что клиент не может использовать программное обеспечение, просто вставив палку WLAN =)
Почему бы не кэшировать все MAC-адреса межфазного ethernet? –
@rdkleine: Это приведет к поломке активации при добавлении другого сетевого адаптера. – Jens
Вы можете сравнить все адаптеры со всеми кэшированными. Одной пары достаточно, не так ли? –