gpt4 book ai didi

C++ 从注册表中获取 Windows 产品 ID

转载 作者:行者123 更新时间:2023-11-28 00:06:43 30 4
gpt4 key购买 nike

我已经在互联网上搜索并找到了很多对我不起作用的“解决方案”:/

我有这个:

HKEY keyHandle;
char rgValue[1024];
char fnlRes[1024];
DWORD size1;
DWORD Type;

if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion", 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &keyHandle) == ERROR_SUCCESS)
{
size1 = 1023;
RegQueryValueEx(keyHandle, L"Productid", NULL, &Type, (LPBYTE)rgValue, &size1);
sprintf_s(fnlRes, "Product ID of your Windows system is:: %s", rgValue);
}
else strcpy_s(fnlRes, "Couldn't access system information!");

RegCloseKey(keyHandle);

std::cout << fnlRes;

我在控制台中得到了这个:

Screenshot

最佳答案

原因是字符编码不匹配。您正在调用 RegQueryValueEx() 的 Unicode 版本,但给它一个 Ansi 缓冲区来填充。使用 WCHAR 而不是 char:

HKEY keyHandle;
WCHAR rgValue[1024];
WCHAR fnlRes[1024];
DWORD size1;
DWORD Type;

if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion", 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &keyHandle) == ERROR_SUCCESS)
{
size1 = 1023;
RegQueryValueExW(keyHandle, L"Productid", NULL, &Type, (LPBYTE)rgValue, &size1);
swprintf_s(fnlRes, L"Product ID of your Windows system is:: %s", rgValue);
RegCloseKey(keyHandle);
}
else wcscpy_s(fnlRes, L"Couldn't access system information!");

wcout << fnlRes;

关于C++ 从注册表中获取 Windows 产品 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35296105/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com