Мое приложение правильно читает и записывает в реестр. Теперь мне нужно прочитать значение реестра из:C++ - получение нулевых значений в значении, считанных из реестра
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
но в value
массива после каждого символа их является «\ 0» значение из-за к которому привязан только первый символ массива к строке. Это странно!
Или используйте ['RegGetValue()'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms724868.aspx) вместо этого, который касается проблемы с нулевым терминатором для вас. –