Из чего генерируется и как изменить QSysInfo::machineUniqueId()

Собственно, в qt5 есть такая вещь, как QSysInfo::machineUniqueId(). Интересно, как она работает на Windows, MacOS и Linux и какие данные использует? А также возможный (вероятный) способ обхода


Ответы (1 шт):

Автор решения: Fat-Zer

Достаточно лишь посмотреть исходники:

  • На Darwin-системах (MacOS и iOS) это значение kIOPlatformUUIDKey из их регистра (может кто-то уточнит конкретнее — адекватной документации что это такое я не нашёл)
  • На BSD-системах это значение kern.hostuuid, запрашиваемое sysctl. По факту оно хранится в /etc/hostid. см. man sysctl
  • На Linux это /var/lib/dbus/machine-id (или /usr/local/var/lib/dbus/machine-id, как фаллбек). На systemd-системах обычно это симлинк на /etc/machine-id. Это случайный uuid, который обычно генерируется во время первой загрузки (или первого запуска dbus). См. документацию debian и fdo.
  • На Win это значение из ключа реестра HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid. Как обычно, ключи реестра ни кто не документирует, но, судя по всему, это также случайное значение, сгенерированное в момент установки.
→ Ссылка