RegQueryValueEx записывает в буфет только 1 байт
HKEY hKey;
char keyData[256] = { 0 };
DWORD keysize = sizeof(keyData);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\hrz", 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
{
if (RegQueryValueEx(hKey, L"Key", NULL, NULL, (LPBYTE)keyData, &keysize) == ERROR_SUCCESS)
{
cout << keyData;
}
}
RegCloseKey(hKey);
Почему в keyData записывается только первый байт того что должно быть?Я знаю, что вместо типа char должен быть wchar_t,но ведь LPBYTE это указатель на байт,а char это как раз байт.А wchar_t это 2 байта,но с wchar_t работает, а с char нет...
Ответы (1 шт):
Автор решения: Whitehorse
→ Ссылка
Как я разобрался,существует 2 версии RegOpenKeyEx:RegOpenKeyExA и RegOpenKeyExW которые выбираются в зависимости от настроек проекта.Я использовал настройку проекта для UNICODE и использовал буфер типа char,в который писалось не по 1 байту а по 2(тип wchar_t).