Проверка, существует ли раздел реестра

Я ищу чистый способ проверить, существует ли раздел реестра. Я предполагал, чтоRegOpenKey потерпит неудачу, если я попытаюсь открыть ключ, который нене существует, но это не такт.

Я мог бы использовать обработку строк, чтобы найти и открыть родительский ключ того, который яm, а затем перечислите подключи этого ключа, чтобы выяснить,Я заинтересован в существовании, но это похоже на скачок в производительности и странный способ реализовать такую простую функцию.

Я думаю, что вы могли бы использоватьRegQueryInfoKey для этого как-то, но MSDN нене могу дать слишком много подробностей о том, как, даже если этовозможно.

Обновить: Мне нужно решение в Win32 API, а не в управляемом коде, .NET или с использованием любой другой библиотеки.

Документы в MSDN, кажется, указывают, что вы должны иметь возможность открыть ключ для разрешения на чтение и получить ошибку, если это не такне существует, как это:

lResult = RegOpenKeyEx (hKeyRoot, lpSubKey, 0, KEY_READ, &hKey);

if (lResult != ERROR_SUCCESS) 
{
    if (lResult == ERROR_FILE_NOT_FOUND) {

Тем не менее, я получаюERROR_SUCCESS когда я попробую это.

Обновление 2Мой точный код:

HKEY subKey = nullptr;
LONG result = RegOpenKeyEx(key, subPath.c_str(), 0, KEY_READ, &subKey);
if (result != ERROR_SUCCESS) {

... ноresult являетсяERROR_SUCCESS, хотя я'Я пытаюсь открыть ключ, который не существует.

Обновление 3Похоже, вы правы. Это терпит неудачу на одном конкретном тестовом примере (загадочно). Если я попробую его на любом другом ключе, он вернет правильный результат. Двойная проверка с помощью редактора реестра по-прежнему не показывает ключ. Дон»не знаю, что из всего этого сделать.

Ответы на вопрос(3)

Ваш ответ на вопрос