У меня есть вопрос, как генерировать уникальный порядковый номер машины в Delphi? Я пытался сделать это использование идентификатора материнская плата или процессор, но к сожалению это, к сожалению, поддерживается. Порядковые номера раздела, и т.д. уменьшитесь, потому что это изменяется после отформатированного. Я ищу что-то, что не изменяется после отформатированного. У кого-либо есть какая-либо идея?
Часто используется MAC-адрес (а) сетевой карты, есть несколько способов запросить MAC-адрес (в Delphi), но самый простой / чистый способ - это, вероятно, использовать GetAdaptersInfo API.
Вот простое решение
Если вы беспокоясь о безопасности использовать хэш по (Guid + некоторые секретные данные)
У меня была похожая проблема в старые добрые времена DOS. Я обнаружил, что ПЗУ установленного оборудования, т.е. видеокарта, серийные порты контроллеров дисков и т. д. были доступны напрямую, так как они отображены в памяти. Это означает, что я смог создать список установленного оборудования и использовать его для создания «серийного номера», который однозначно идентифицировал каждый компьютер (до тех пор, пока не были изменены настройки оборудования). Я уверен, что нечто подобное возможно и сегодня.
Посмотрите http://duartes.org/gustavo/blog/post/motherboard-chipsets-memory-map , если вы хотите использовать этот подход.
С уважением
В библиотеке JCL есть несколько функций, очень полезных для этой темы:
function CPUID: TCpuInfo;
function GetMacAddresses(const Machine: string; const Addresses: TStrings): Integer;
function GetVolumeSerialNumber(const Drive: string): string;
function GetBIOSName: string;
Вы можете протестировать GLibWMI , который извлекает информацию о нескольких компонентах в Windows.
Это бесплатно, и исходный код включен. Вы можете найти его в моем Интернете или в Sourceforge .
alt text http://img175.imageshack.us/img175/1250/imagen344.png
Включить компоненты для BIOSInfo, DiskInfo, ProcessorInfo, ...
С помощью этих трех компонентов вы можете получить такую информацию :
alt text http://img690.imageshack.us/img690/6006/imagen349.png
Вы можете найти BIN / EXE GenericDemo (все компоненты) здесь ; Вы можете проверить всю информацию, которую вы можете получить с помощью этих компонентов.
Я склонен согласиться с лагерем «это невозможно». По крайней мере, не на 100%, но, вероятно, это можно сделать «достаточно хорошо», чтобы держать в подчинении рядового пользователя.
И если это можно сделать, то, вероятно, это было сделано. Вы проверяли Torry's Delpi300 и т. Д. (Возможно, даже sourceforge, хотя вам, возможно, придется перевести на Delphi).
http://www.google.com.sg/search?hl=ru&source=hp&q=How+to+generate+unique+serial+number+of+machine+in+Delphi действительно выглядит многообещающим
То, что вам нужно, на самом деле является своего рода "аппаратным отпечатком пальца", а не "серийным номером". Проблема этого подхода в том, что он не является на 100% надежным. Доказательство: Microsoft не удалось найти способ правильно ограничить OEM-программы одним компьютером, вы можете переустановить OEM-лицензию на новый компьютер через некоторое время! Как только вы согласитесь, что идеального решения быть не может, вы можете посмотреть на свои возможности и попробовать найти что-то достаточно хорошее.
Для своих приложений я создаю отпечаток пальца на основе информации, возвращаемой GetSystemInfo, GetVolumeInformation и (для раздела 'C:') и выбора ключей реестра из HKLM\HARDWARE (на самом деле много ключей реестра, все, кроме usb, клавиатуры и мыши). Я читаю информацию об оборудовании из реестра, потому что приложение Windows не может получить прямой доступ к оборудованию (подходы в стиле DOS не могут работать), и потому что у меня нет времени на поиск способов определения информации об оборудовании для многих различных устройств.
Мой подход имеет следующие недостатки:
Тем не менее, даже с учетом всей этой изменяющейся информации, я получаю столкновения: Что-то около 1/1000 компьютеров! Здесь действует несколько факторов:
Эта система работает для меня, но она не будет работать для вас, если вы рассчитываете повторно идентифицировать компьютеры после их переустановки.