如何正确检查 c++ 是否存在注册表项?
How to properly check if a registry key exists with c++?
我的目标很简单,我只想用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
,则密钥不存在。任何其他返回值都表示密钥存在,如果返回值ERROR_SUCCESS
则需要关闭打开的密钥,否则即使密钥存在,您也无权打开密钥。
相关文章:
- 有没有任务栏API可以立即应用注册表更改
- 检查注册表项是否链接到(或副本)另一个注册表项
- 禁用地址共享注册表不起作用
- 如何从注册表项中提取配置单元和注册表名称
- 注册表正在设置 1 个字符
- 清理"QSettings"注册表项的最佳方法(Windows上的Qt 5)
- 在 c++ 中编辑注册表项
- 某些进程的注册表限制
- 在编译时生成某种子类/类型注册表?
- 如何测试注册表项是否存在?
- 注册表-获取值(而不是键)上次更改的时间和键创建日期
- 从注册表中检索已注销用户的 sid
- 如何正确检查 c++ 是否存在注册表项?
- 如何在不使用任何数据库的情况下制作动态注册表单?
- 强制资源管理器重新加载注册表值
- 以编程方式锁定注册表项以避免并发问题
- 有没有办法直接使用 RegGetValue() 检查注册表值是否存在
- 为已经存在的注册表类使用包装类是一种好方法吗?
- 如果注册表项不存在
- 为什么RegOpenKeyEx允许我打开注册表编辑器中不存在的密钥?