Помощь с идентификатором оборудования

Я использую C# и.NET 2.0. Моему приложению нужен какой-то способ проверки разных пользователей, поэтому я буду использовать аппаратный идентификатор, но я увидел, что могу использовать только:

  • MAC-адрес - легко изменяемый и не у всех есть // НЕТ
  • идентификатор процессора - при использовании WMI возвращает значение для модели процессора, оно не уникально // НЕТ
  • серийная плата - не у каждой материнской платы // НЕТ
  • серийный том Windows - я не уверен, будет ли он изменен при переустановке Windows и формат тома

Так есть что-то, что я не упомянул для hwid? Я хочу что-то, что у всех есть, и это не будет стерто при переустановке Windows. В противном случае мне придется использовать серийный номер тома Windows.


РЕДАКТИРОВАТЬ: Из комментариев я думаю, что лучше использовать идентификатор жесткого диска. Как получить его? EDIT2: я только что прочитал, что диски SCSI не имеют последовательных. Это правда?

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Я уже использую серийный номер корневого диска в своем приложении. Это работает довольно хорошо. Спасибо всем.

5 ответов

Решение

HDD Серийный номер: уникальный, неизменный, и у каждого есть.

не идеальный вариант, но...

Ну, я бы пошел за более чем один идентификатор. Если вы объедините достаточно идентификаторов, они получат достаточно уникальности.

РЕДАКТИРОВАТЬ: вы также можете перейти на место на жестком диске, где была установлена ​​ваша программа (Platter, Cylinder и т. Д.)

Почему вы хотите использовать аппаратный идентификатор? Я бы сам пошел на какую-то защиту на основе форм (или AD).

Тем не менее, учитывая то, что: HWID состоит в том, что он идентифицирует конкретную конфигурацию компьютера: он предназначен для изменения в случае системных изменений. Вы упоминаете, что Windows Volume Serial может измениться при переустановке и переформатировании, но не нужно ли переустанавливать ваше программное обеспечение на этом этапе? Последовательность жестких дисков также может измениться, если, например, пользователь по какой-то причине меняет местами жесткие диски.

Если вам нужно использовать HWID, вам, вероятно, придется выбрать один (или несколько) из доступных вариантов, чтобы обеспечить уникальность и либо кодировать, либо информировать пользователей об изменениях оборудования, требующих переустановки и / или перенастройки программного обеспечения.,

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

Не требуется высокий уровень безопасности? => Еще одна возможность - использовать SID пользователя или компьютера. Вы должны принять во внимание, что ваше приложение выполнено elvated => Тогда пользователь является администратором.

И последнее, но не менее важное: записать случайное значение в несколько байтов в реестр (возможно, в разных местах) под HKEY_CURRENT_USER и использовать их в качестве идентификатора.

MAC-адрес не очень надежен. Вы должны использовать то, что не может быть изменено, например ID процессора или IDD жесткого диска.

Вот хочу я имею ввиду:
http://www.soft.tahionic.com/download-hdd_id/index.html
http://www.soft.tahionic.com/download-hdd_id/hardware%20ID%20programmer%27s%20DLL.html


И чтобы ответить на ваш вопрос, да, SCSI не имеет аппаратного идентификатора.

Другие вопросы по тегам