我的目标很简单,我只想用 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_FOUND
或 ERROR_FILE_NOT_FOUND
,则 key 不存在。任何其他返回值表示键存在,如果返回值为ERROR_SUCCESS
那么您需要关闭打开的 key ,否则即使它存在,您也无权打开该 key 。
关于c++ - 如何使用 C++ 正确检查注册表项是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50650559/