Я использую приведенный ниже код в консольном приложении, чтобы получить версию моей ОС Windows:
#include <string>
#include <iostream>
#include <Windows.h>
int main()
{
DWORD dataSize = 0;
char buffer[256];
dataSize = sizeof(buffer);
RegGetValueA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
"ProductName", RRF_RT_REG_SZ, 0, &buffer, &dataSize);
cout << buffer << endl;
return 0;
}
У меня установлена Windows 10 Pro, но функция возвращает Windows 10 Enterprise. Я даже вручную перешел с помощью regedit к указанному ключу, и в разделе «Название продукта» я вижу Windows 10 Pro. Вот изображение моего regedit.
Я запустил другую функцию RtlGetProductInfo(10, 0, 0, 0, f);
и он вернул значение 0x48 для f, который в соответствии с Microsoft У меня Windows 10 Enterprise Evaluation.
Теперь, в этот момент, я понимаю, что что-то не так с моей установкой Windows, но почему мой первый код возвращает другое значение, чем то, что отображается для "ProductName"
в моем редакторе реестра?
Редактировать: Я должен добавить, что я запустил код на другом ПК с Windows, и он возвращает правильную версию на этом компьютере.
Задача ещё не решена.
Других решений пока нет …