Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Уникальный ID компьютера, HardwareID 
:(
    Опции темы
Gnusss
Дата 13.6.2011, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 19.1.2005

Репутация: нет
Всего: нет



Привет всем.

Появилась проблема с определением уникального для каждого компьютера HardwareID, необходимо для отслеживания установок программы у пользователей.
В начале пробовал через, CpuID определять, было что-то типа этого:
Код

type
  TCPUID = array[1..4] Of Longint;

function GetCPUID: TCPUID; assembler; register;
asm
  PUSH    EBX
  PUSH    EDI
  MOV     EDI,EAX
  MOV     EAX,1
  DW      $A20F
  STOSD
  MOV     EAX,EBX
  STOSD
  MOV     EAX,ECX
  STOSD
  MOV     EAX,EDX
  STOSD
  POP     EDI
  POP     EBX
end;
...
fID:= CPUID[1] + CPUID[2] + CPUID[3] + CPUID[4];

Но оно начало выдавать одинаковые ID уже на совсем маленьком (больше 6-ти) количестве пользователей.
Дальше попробовал использовать TDiskDriveInfo (Component Version 1.1 - Suite GLib )
Код

var
  DDI: TDiskDriveInfo;
begin
  SN^:= '';
  DDI:= TDiskDriveInfo.Create(nil);
  try
    DDI.Active:= True;
    SN^:= DDI.DiskDriveProperties.SerialNumber;
  finally
    DDI.Free();
  end;

К сожалению оно тоже выдаёт одинаковые ID.

Собственно вопрос, если ли хоть какой-то способ точно генерировать уникальный HardwareID чтобы в независимости от пере-установок Windows он был одинаковы?

PM MAIL   Вверх
ZBugz
Дата 13.6.2011, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Самое простое, это сложи CPUid и HDDid, уже меньше вероятность будет smile 
PM MAIL   Вверх
Akella
Дата 13.6.2011, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



МАС адрес по идее уникальный.
Но его можно ручками в винде поменять, если знать как.

Добавлено @ 12:54
Но если пользователь установит в одной локальной сети одинаковые MAC-адреса для разных компьютеров, то сеть работать не будет.
PM MAIL   Вверх
Gnusss
Дата 13.6.2011, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 19.1.2005

Репутация: нет
Всего: нет



@ZBugz, да но все же хотелось бы нормального варианта. Вероятность повторений все ровно довольно большая.

@Akella, а MAC адресом это вариант, но что делать если в системе несколько сетевых адаптеров (еще виртуальные например). Ну и плюс что что поменять можно не айс совсем.
PM MAIL   Вверх
Akella
Дата 13.6.2011, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Gnusss @  13.6.2011,  16:04 Найти цитируемый пост)
@Akella, а MAC адресом это вариант, но что делать если в системе несколько сетевых адаптеров (еще виртуальные например). Ну и плюс что что поменять можно не айс совсем. 

складывай или бери первый попавшийся

Добавлено через 24 секунды
думаю, что можно как-то определить тип сетевого адаптера: физический или виртуальный
PM MAIL   Вверх
kami
Дата 13.6.2011, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(Gnusss @  13.6.2011,  10:07 Найти цитируемый пост)
Но оно начало выдавать одинаковые ID уже на совсем маленьком (больше 6-ти) количестве пользователей.

Потому что плюсовать не надо. 1+2+1+1 = 0+3+2+0, хотя ID разные. Надо переводить в Hex-строку с фиксированным количеством символов и складывать уже строки.

Цитата(Gnusss @  13.6.2011,  10:07 Найти цитируемый пост)
TDiskDriveInfo

Пытался как-то использовать что-то подобное. На первом же компьютере с raid-0 программа зависла. Отказался от этого.

Цитата(Gnusss @  13.6.2011,  10:07 Найти цитируемый пост)
если ли хоть какой-то способ точно генерировать уникальный HardwareID чтобы в независимости от пере-установок Windows он был одинаковы

Нет такого. Потому что все железки в компьютере - переменные величины. Например, я поменял CPU на более мощный/такой же, потому что старый сгорел; добавил памяти, доставил/заменил винчестер... Кроме того, Вашу программу можно запустить на VirtualBox|VMWare - а там вообще ни одной "реальной" железки нет.

Цитата(Akella @  13.6.2011,  19:19 Найти цитируемый пост)
думаю, что можно как-то определить тип сетевого адаптера: физический или виртуальный

Думаю, нельзя (хотя, могу ошибаться) - любая программа пользовательского режима взаимодействует с железкой через драйвер. И если последний грамотно написан, то отличить не получится.
PM MAIL WWW   Вверх
Gnusss
Дата 13.6.2011, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 19.1.2005

Репутация: нет
Всего: нет



Цитата(kami @  13.6.2011,  22:05 Найти цитируемый пост)
Потому что плюсовать не надо. 1+2+1+1 = 0+3+2+0, хотя ID разные. Надо переводить в Hex-строку с фиксированным количеством символов и складывать уже строки.

Хм... действительно, это интересный вариант. Не знаешь все-таки насколько CpuID будет уникальный?
Цитата(kami @  13.6.2011,  22:05 Найти цитируемый пост)
Пытался как-то использовать что-то подобное. На первом же компьютере с raid-0 программа зависла. Отказался от этого.

Оно еще и требует чтобы какой-то там сервис в системе был включен, а некоторые его отключают типа ради быстродействия.
Цитата(kami @  13.6.2011,  22:05 Найти цитируемый пост)
Нет такого. Потому что все железки в компьютере - переменные величины. Например, я поменял CPU на более мощный/такой же, потому что старый сгорел; добавил памяти, доставил/заменил винчестер... Кроме того, Вашу программу можно запустить на VirtualBox|VMWare - а там вообще ни одной "реальной" железки нет.

Ну мне то в принципе не важно это, навряд ли кто-то будет запускать эту программу на виртуалке.
Мне нужен уникальный ID только для подсчета уникальных пользователей и сбора прочей статистики.
А замена CPU разве не повлечет за собой пере-установку системы и прочие радости, так что это будет уже другой комп.
PM MAIL   Вверх
northener
Дата 14.6.2011, 01:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Gnusss @  13.6.2011,  22:30 Найти цитируемый пост)
Мне нужен уникальный ID только для подсчета уникальных пользователей и сбора прочей статистики.

А вот это уже интересно. Зачем "сбор статистики" производить незаметно для пользователя?


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Gnusss
Дата 14.6.2011, 06:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 19.1.2005

Репутация: нет
Всего: нет



@northener, а кто сказал что не заметно? Пользователи знают что статистика собирается, об этом написано раз - в лицензионном соглашении (которое они 100% увидят при первом запуске) и два - при первоначальной настройке когда пользователь вводит свое имя (которое тоже идет в статистику).

Это сообщение отредактировал(а) Gnusss - 14.6.2011, 06:15
PM MAIL   Вверх
Vas
Дата 14.6.2011, 08:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 4
Всего: 28



Цитата(Gnusss @  14.6.2011,  06:15 Найти цитируемый пост)
в лицензионном соглашении (которое они 100% увидят при первом запуске)

По статистике, на чтение лицензионного соглашения в России уходит не более 3 секунд 


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Gnusss
Дата 14.6.2011, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 19.1.2005

Репутация: нет
Всего: нет



Цитата(Vas @  14.6.2011,  08:19 Найти цитируемый пост)
По статистике, на чтение лицензионного соглашения в России уходит не более 3 секунд 

Ну это как бы, уже не мои проблемы. И кстати, по статистике только 46% пользователей моей программы проживают в России.


Это сообщение отредактировал(а) Gnusss - 14.6.2011, 10:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1082 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.