Получение уникального идентификатора компьютера

Прочитал много разных источников на предмет того, как сгенерировать уникальный идентификатор для компьютера, в основном пишут - получи MAC адрес (это не подходит потому что его можно легко поменять) или использовать WMI и про него пишут что он может быть поломан или отключен по этому тоже не подходит.

Нашел вот такую функцию, не совсем понял, по моему тут не уникальный идентификатор т.е. часть переменных это просто название производителя .. а другая что процессор может .. а это уж точно не то что нужно.

static const char* cpuId()
{
    unsigned long s1 = 0;
    unsigned long s2 = 0;
    unsigned long s3 = 0;
    unsigned long s4 = 0;
    __asm
    {
        mov eax, 00h
        xor edx, edx
        cpuid
        mov s1, edx
        mov s2, eax
        mov eax, 01h
        xor ecx, ecx
        xor edx, edx
        cpuid
        mov s3, edx
        mov s4, ecx
    }

    static char buf[100];
    sprintf_s(buf, "%08X %08X %08X %08X", s1, s2, s3, s4);
    return buf;
}

Итак, какой самый верный способ получить уникальный идентификатор компьютера не используя WMI и не привязываясь к идентификатору жесткого диска или MAC адреса ..? (используя WMI я бы привязал идентификатор к ID процессора , видеокарты и материнской платы, т.е. эти данные хорошо бы получить без WMI )
(Решение ищу на языке C++ )
Так же идентификатор не должен поменяться при переустановке Windows


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