Мой упрощенный код:Чтение значение строки из реестра ключ
HKEY hKey;
if(someCondition)
lRes = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_READ, &hKey);
else
lRes = RegOpenKeyExW(HKEY_LOCAL_MACHINE, "SOFTWARW\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_READ, &hKey);
if(lRes == ERROR_SUCCESS)
{
std::wstring strKeyValue;
lRes = GetStringRegKey(hKey, L"valueName", strKeyValue, L"bad");
if(lRes == ERROR_SUCCESS)
{
//doSomething
}
}
Оба RegOpenKeyExW()
возвращение ERROR_SUCCESS
, но в одном случае (чтение из Wow6432Node
) в GetStringRegKey()
возвращается ERROR_SUCCESS
и инициализирует strKeyValue
и в другом случае она возвращает ERROR_FILE_NOT_FOUND
. Все пути и имена значений правильные. Записи были добавлены в реестр вручную.
В чем проблема? Есть ли какие-либо полномочия? Благодаря!
Вы Хэ опечатка в строке: 'ЖРД = RegOpenKeyExW (HKEY_LOCAL_MACHINE,«SOFTWARW \\ Wow6432Node \\ 'Это должно быть. "SOFTWARE" Кроме того, вам не нужно включать' \\ Wow6432Node \\. 'при открытии ключа реестра. ОС Windows сделает это за вас. Вам просто нужно знать об этом, когда вы сами смотрите LOOK в реестре с помощью инструмента RegEdit.exe. – StarPilot