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

How to properly check if a registry key exists with c++?

本文关键字:注册表 存在 是否 何正确 检查 c++      更新时间:2023-10-16

我的目标很简单,我只想用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,则密钥不存在。任何其他返回值都表示密钥存在,如果返回值ERROR_SUCCESS则需要关闭打开的密钥,否则即使密钥存在,您也无权打开密钥。