Планирую собирать анонимную статистику использования программы на сервер и хочу имет
возможность группировать сессии с одной машины. Встал вопрос, как получить в меру уникальный идентификатор компьютера и/или пользователя компьютера, при этом соблюдая анонимность (т.е. например не получать имя учетки человека)?
Что-то типа серийного номера жесткого диска или процессора, чтобы при каждом запуске программы он был один и тот же. Редкие случаи смены железа опустим.
ComputerUID := ...
Ответы
Ответ 1
Судя по вопросу про Delphi подразумевается использование OS Windows. Лично я бы записал в реестр, в ветку моего приложения сгенерированный при первом запуске GUID.
Таким образом вы гарантируете и уникальность и конфиденциальность.
Ответ 2
Я бы использовал идентификатор материнской платы. Получить его можно с помощью WMI
Пример есть на enSO. Как написано в одном из предыдущих ответов, я бы его ещё и захешировал, чтобы усилить анонимность.
Не рекомендую использовать сетевые интерфейсы, т.к. в них могут скрываться интерфейс
виртуальных машин, которые имеют свойство менять MAC адреса. Поэтому надо либо как-т
отличить "железный" интерфейс, от виртуального. Либо делать нечёткое сравнение по всем интерфейсам сразу. Но, на мой взгляд, овчинка выделки не стоит - есть более стабильные идентификаторы.
Ответ 3
MAC адрес сетевой карты (минимальный из всех, если в компе несколько интерфейсов).
Ответ 4
не получать имя учетки человека
личную информацию можно хэшировать разными путями.
Ответ 5
Я использовал несколько схем:
Серийный номер HDD - использовал в программах, где нужна привязка к текущей машине без учета пользователей.
Серийный номер HDD + User Name + Komputer Name - для привязки к пользователю, железе.
Привязка по серийнику флешки + файл лицензии на ней.
С данных бралась хеш-сумма. Или шифровались неким образом.
Ответ 6
Серийник системного раздела через GetVolumeInformation()
Комментариев нет:
Отправить комментарий