| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Уникальный ID компьютера |
| Автор: Gnusss 13.6.2011, 10:07 | ||||
| Привет всем. Появилась проблема с определением уникального для каждого компьютера HardwareID, необходимо для отслеживания установок программы у пользователей. В начале пробовал через, CpuID определять, было что-то типа этого:
Но оно начало выдавать одинаковые ID уже на совсем маленьком (больше 6-ти) количестве пользователей. Дальше попробовал использовать TDiskDriveInfo (Component Version 1.1 - Suite GLib )
К сожалению оно тоже выдаёт одинаковые ID. Собственно вопрос, если ли хоть какой-то способ точно генерировать уникальный HardwareID чтобы в независимости от пере-установок Windows он был одинаковы? |
| Автор: ZBugz 13.6.2011, 10:32 |
| Самое простое, это сложи CPUid и HDDid, уже меньше вероятность будет |
| Автор: Akella 13.6.2011, 12:54 |
| МАС адрес по идее уникальный. Но его можно ручками в винде поменять, если знать как. Добавлено @ 12:54 Но если пользователь установит в одной локальной сети одинаковые MAC-адреса для разных компьютеров, то сеть работать не будет. |
| Автор: Gnusss 13.6.2011, 16:04 |
| @ZBugz, да но все же хотелось бы нормального варианта. Вероятность повторений все ровно довольно большая. @Akella, а MAC адресом это вариант, но что делать если в системе несколько сетевых адаптеров (еще виртуальные например). Ну и плюс что что поменять можно не айс совсем. |
| Автор: kami 13.6.2011, 22:05 | ||||||
Потому что плюсовать не надо. 1+2+1+1 = 0+3+2+0, хотя ID разные. Надо переводить в Hex-строку с фиксированным количеством символов и складывать уже строки. Пытался как-то использовать что-то подобное. На первом же компьютере с raid-0 программа зависла. Отказался от этого.
Нет такого. Потому что все железки в компьютере - переменные величины. Например, я поменял CPU на более мощный/такой же, потому что старый сгорел; добавил памяти, доставил/заменил винчестер... Кроме того, Вашу программу можно запустить на VirtualBox|VMWare - а там вообще ни одной "реальной" железки нет.
Думаю, нельзя (хотя, могу ошибаться) - любая программа пользовательского режима взаимодействует с железкой через драйвер. И если последний грамотно написан, то отличить не получится. |
| Автор: Gnusss 13.6.2011, 22:30 | ||||||
Хм... действительно, это интересный вариант. Не знаешь все-таки насколько CpuID будет уникальный?
Оно еще и требует чтобы какой-то там сервис в системе был включен, а некоторые его отключают типа ради быстродействия.
Ну мне то в принципе не важно это, навряд ли кто-то будет запускать эту программу на виртуалке. Мне нужен уникальный ID только для подсчета уникальных пользователей и сбора прочей статистики. А замена CPU разве не повлечет за собой пере-установку системы и прочие радости, так что это будет уже другой комп. |
| Автор: northener 14.6.2011, 01:04 | ||
А вот это уже интересно. Зачем "сбор статистики" производить незаметно для пользователя? |
| Автор: Gnusss 14.6.2011, 06:15 |
| @northener, а кто сказал что не заметно? Пользователи знают что статистика собирается, об этом написано раз - в лицензионном соглашении (которое они 100% увидят при первом запуске) и два - при первоначальной настройке когда пользователь вводит свое имя (которое тоже идет в статистику). |
| Автор: Vas 14.6.2011, 08:19 | ||
По статистике, на чтение лицензионного соглашения в России уходит не более 3 секунд |
| Автор: Gnusss 14.6.2011, 10:29 | ||
Ну это как бы, уже не мои проблемы. И кстати, по статистике только 46% пользователей моей программы проживают в России. |