我的应用程序正确读取和写入注册表。现在,我需要从以下位置读取注册表值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid
这是我的代码:
bool GetWindowsID(string &winID)
{
HKEY hKey = 0, hKeyType = HKEY_LOCAL_MACHINE;
bool status = false;
DWORD dwType = 0;
DWORD dwBufSize = 256;
char value[256] = "\0";
if (RegOpenKeyEx(hKeyType, L"SOFTWARE\\Microsoft\\Cryptography", NULL, KEY_QUERY_VALUE|KEY_WOW64_64KEY, &hKey) == ERROR_SUCCESS)
{
dwType = REG_SZ;
if (RegQueryValueEx(hKey, L"MachineGuid", NULL, &dwType, (LPBYTE)value, &dwBufSize) == ERROR_SUCCESS)
status = true;
RegCloseKey(hKey);
}
winID.assign(value);
return status;
}
我在每个字符后得到数组中的guid
but,但是value
它们是一个“ \ 0”值,这是因为只有数组的第一个字符才分配给字符串。这太奇怪了!
您已经建立了针对Unicode的目标,因此注册表API返回了UTF-16 Unicode文本。请记住,每个元素的宽度为2个字节,而不是char
使用。wchar_t
wchar_t
还要确保按照文档中的说明,说明返回的字符串不是以空值结尾的。您必须考虑中返回的值dwBufSize
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句