Как правильно проверить, существует ли раздел реестра с C ++? - PullRequest
0 голосов
/ 01 июня 2018

Моя цель очень проста, я просто хочу проверить, существует ли раздел реестра с C ++.Я не мог найти ничего полезного в Интернете.Следующий код компилируется без ошибок, но я получаю вывод «Не открыт», и я знаю, что у меня есть этот раздел реестра.

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
using namespace std;
int main(){
    HKEY hKey;
    if(RegOpenKey(HKEY_LOCAL_MACHINE,TEXT("Software\\Oracle\\VirtualBox"),&hKey) == ERROR_SUCCESS)    {

        cout << "Opened";
    }
    else
    {
        cout << "not opened";
    }
    return 0;
}

1 Ответ

0 голосов
/ 02 июня 2018

Код у вас в порядке (хотя вы должны использовать RegOpenKeyEx() вместо этого, так как RegOpenKey() устарел и предоставляется только для обратной совместимости с 16-битным кодом).Вам просто нужно обратить внимание на возвращаемое значение.Если RegOpenKey/Ex() возвращает либо ERROR_PATH_NOT_FOUND, либо ERROR_FILE_NOT_FOUND, ключ не существует.Любое другое возвращаемое значение означает, что ключ существует, и если возвращаемое значение равно ERROR_SUCCESS, то вам необходимо закрыть открытый ключ, в противном случае у вас нет доступа к открытию ключа, даже если он существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...