Проверка, существует ли раздел реестра
Я ищу чистый способ проверить, существует ли раздел реестра. Я предполагал, что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Похоже, вы правы. Это терпит неудачу на одном конкретном тестовом примере (загадочно). Если я попробую его на любом другом ключе, он вернет правильный результат. Двойная проверка с помощью редактора реестра по-прежнему не показывает ключ. Дон»не знаю, что из всего этого сделать.