如何正确检查c ++是否存在注册表项?

时间:2018-06-01 20:23:35

标签: c++ windows winapi

我的目标很简单,我只想检查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 :(得分:1)

您拥有的代码很好(尽管您应该使用RegOpenKeyEx(),因为RegOpenKey()已被弃用,并且只是为了向后兼容16位代码而提供。你只需要注意返回值。如果RegOpenKey/Ex()返回ERROR_PATH_NOT_FOUNDERROR_FILE_NOT_FOUND,则该密钥不存在。任何其他返回值表示密钥存在,如果返回值为ERROR_SUCCESS,则需要关闭打开的密钥,否则即使密钥存在,您也无权打开密钥。

相关问题