Вопрос

Программа, над которой я работаю, предполагает, что UUID, сгенерированный вызовом Windows RPC API UuidCreateSequential (), содержит MAC-адрес основного адаптера Ethernet. Это предположение правильно или я должен использовать другой метод для получения MAC-адреса?

Это было полезно?

Решение

Я бы не стал полагаться на это - единственная причина, по которой UuidCreateSequential имеет MAC-адрес, заключается в том, что он пытается гарантировать, что UUID уникален во всей сети. Кроме того, почему вы используете такой странный способ получить MAC-адрес? Используйте WMI и фактически запросите MAC-адрес вместо побочного эффекта функции создания UUID.

Другие советы

Это правильное предположение. В документации на MSDN конкретно указано, что в ней будет указан адрес локальной сети карточка на автомате. Он не упоминает ничего о сценарии с несколькими картами, но выбор основной карты выглядит логичным скачком.

Если вы пишете управляемый код, я бы использовал NetworkInterface и вызовите GetAllNetworkInterfaces () . Или из кода C ++ позвоните в GetAdaptersInfo , это то, что использует управляемая реализация.

Даже если UuidCreateSequential работает для этого, это довольно непонятный способ получения информации и скрывает потенциальные проблемы, такие как компьютер, имеющий более одного адаптера.

Только UUID версии 1 содержит MAC-адрес, и только если исходный генератор имел доступ к MAC-адресу для начала. Если исходный генератор не имел доступа к MAC-адресу, он использовал бы 6 случайных байтов, полученных из криптографически безопасного генератора случайных чисел, в соответствии с разделом 4.5 RFC 4122. Из-за этого нет гарантии, что MAC-адрес указанный в UUID на самом деле является MAC-адресом.

В большинстве случаев единственной причиной, по которой кому-либо понадобится анализировать MAC-адрес по UUID, является судебная экспертиза. Посмотрите, например, UUID, встроенные в документ Word для вируса Мелисса. Следователи извлекли MAC-адрес из этих идентификаторов и сопоставили его с MAC-адресом основного сетевого адаптера подозреваемого.

Если вы пытаетесь получить MAC-адрес вашего собственного компьютера, есть гораздо лучшие способы сделать это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top