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

标签 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;
}

最佳答案

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

关于c++ - 如何使用 C++ 正确检查注册表项是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50650559/

相关文章:

c++ - 找事先声明, friend 声明介绍

c++ - long double 的 printf,未知转换类型字符 L

c++ - 包含 windows.h 时出现数百个错误

c++ - 从压缩文件中提取数据返回随机数据

c++ - 为什么我可以将 void* 静态转换为 int* 而不能转换为 int*&?

C++ - 避免类定义中定义的函数的隐式内联

c - 使用 CreateThread() 时在 Windows 中获取线程创建的荒谬时间

windows - 带 Electron 链接的msi安装程序

C++ MFC 如何使用 GetDlgItem()

c++ - COM - 实现 DllGetClassObject