c++ - 如何检查注册表中是否未设置(默认)值

标签 c++ registry

我需要使用 C++ 检查注册表中是否未设置(默认)值。每当未设置该值并且我尝试访问该值时,程序就会崩溃,而且我不知道如何检查该值是否已设置。这是代码:

DWORD valueLength = 256;
char* value = new char[valueLength];
auto queryValueErrorCode = RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE) value,
        &valueLength);
while(queryValueErrorCode == ERROR_MORE_DATA) {
    valueLength += 256;
    char* newValue = new char[valueLength];
    delete[] value;
    value = newValue;
    queryValueErrorCode = RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE) newValue,
            &valueLength);
}

此代码不会自行崩溃 - 当我尝试访问该值时它会崩溃,因此我必须检查该值是否已设置。

最佳答案

(默认)值在设置之前不存在,因此检查错误代码

ERROR_FILE_NOT_FOUND

在尝试访问该值之前。

关于c++ - 如何检查注册表中是否未设置(默认)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31287592/

相关文章:

vba - 哪些注册表项决定 Outlook 配置文件

windows - 如何让 32 位 Perl 读取 64 位 Windows 注册表?

c++ - 以这种方式访问​​受 Base 保护的成员是否安全?

c++ - 如何使用 C++ Boost odeint 库求解这个常微分方程

c++ - 调整动态数组大小时保留用户输入值的问题

visual-studio - 将权限提升到 Visual Studio 以获取构建后事件批处理脚本

c++ - C++程序中的选项

c++ - 如何更新 CMFCPropertyGridCtrl 的属性?

powershell - 使用 powershell 在注册表中编辑 CurrentControlSet

c++ - 是否有任何任务栏API可以立即应用注册表更改?