WMI - хороший способ сделать аппаратный отпечаток? - PullRequest
2 голосов
/ 12 декабря 2011

Я хочу, чтобы c ++ установил развернутое приложение Windows, которое проверило бы аппаратный отпечаток (чтобы убедиться, что пользователь будет использовать приложение только на своем компьютере). После некоторых сетевых исследований я решил, что WMI - это мой инструмент. Я начал с простого приложения MFC и для начала хотел распечатать MotherBoard SerialNumber. И как раз в этот момент все рухнуло. Я проверил на XP и Win7, и это свойство не возвращается. И это заставило меня задуматься - а что, если есть некоторые классы / свойства, которые не будут работать в определенных версиях Windows? Или какие-то аппаратные конфигурации? Мне искренне это не нравится. Мое мгновенное представление об отпечатке пальца - это MAC-адрес (мое приложение строго управляется сетью, поэтому, если у машины нет сетевого соединения, оно вообще не используется). Однако некоторые машины могут иметь несколько MAC-устройств. И некоторые из MAC могут быть виртуальными, которые могут исчезнуть из системы после удаления (то есть VPN-клиент). Я думаю, что MAC-адрес может быть легко изменен, но если я хэш-код номер, пользователь может не понять, что его использовать. Поэтому я прошу вашего совета - является ли WMI хорошим инструментом для идентификации оборудования? Если это так - какие классы / свойства вы бы предложили использовать? Они должны работать на всех машинах и системах, а также быть безопасными / неизменяемыми в одно и то же время (хорошо, мы не сможем многое сделать, если пользователь изменит все оборудование ..) Если WMI не является хорошим решением, чем бы вы предложили какую-либо другую платформу C ++ ? И следующее - какие свойства HD использовать тогда.

Ответы [ 2 ]

5 голосов
/ 12 декабря 2011

Да, WMI - очень хороший вариант для решения этой задачи, ключ в том, чтобы выбрать правильные классы и свойства для использования, или, что еще лучше, вы можете получить доступ к таблицам SMBIOS , чтобы получить информацию о системе и генерировать уникальный идентификатор. Некоторое время назад я написал в блоге об обеих темах, код написан на Delphi, но его легко перевести на C ++

0 голосов
/ 12 августа 2012

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

...