Невозможно открыть ключ реестра, RegOpenKeyEx возвращает ERROR_NO_MORE_FILES ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Невозможно открыть ключ реестра, RegOpenKeyEx возвращает ERROR_NO_MORE_FILES

Сообщение Anonymous »

Я работаю над функцией C++ для проверки существования пути в реестре. Он обрабатывает различные корневые ключи (например, HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER) и использует RegOpenKeyEx() для открытия пути.
Это функция:

Код: Выделить всё

BOOL RegistryPathExists(const WCHAR* fullPath) {
HKEY hKeyRoot;
WCHAR keyPath[MAX_PATH];

if (wcsncmp(fullPath, L"HKEY_LOCAL_MACHINE", 18) == 0) {
hKeyRoot = HKEY_LOCAL_MACHINE;
wcscpy_s(keyPath, fullPath + 19);
} else if (wcsncmp(fullPath, L"HKEY_CURRENT_USER", 17) == 0) {
hKeyRoot = HKEY_CURRENT_USER;
wcscpy_s(keyPath, fullPath + 18);
} else {
return false;  // Unsupported root key
}

HKEY hKey;
LONG result = RegOpenKeyEx(hKeyRoot, keyPath, 0, KEY_READ, &hKey);
if (result == ERROR_SUCCESS) {
RegCloseKey(hKey);
return true;
} else {
return false;
}
}
Когда я передаю путь в HKEY_LOCAL_MACHINE, он работает нормально, но когда я использую HKEY_CURRENT_USER, происходит сбой с ошибкой 0x12 (

Код: Выделить всё

ERROR_NO_MORE_FILES
).
Есть идеи, почему это работает для HKEY_LOCAL_MACHINE, но не работает для HKEY_CURRENT_USER?
Я' Я пытаюсь открыть HKEY_CURRENT_USER\SOFTWARE\TEST\VALUE и HKEY_LOCAL_MACHINE\SOFTWARE\TEST\VALUE, и я подтвердил, что учетная запись пользователя имеет необходимые разрешения для их чтения, проверив реестр.< /п>

Подробнее здесь: https://stackoverflow.com/questions/789 ... more-files

Вернуться в «C++»