首页 > 解决方案 > 我的 winreg 函数出现错误 2

问题描述

我的代码:

HKEY hKey;
char *path = "SYSTEM\\CurrentControlSet\\Control\\IDConfigDB\\Hardware Profiles\\0001\\HwProfileGuid";
LONG result = RegOpenKeyExA(HKEY_LOCAL_MACHINE, path, 0, KEY_ALL_ACCESS, &hKey);
QString q = QString::number(result);

if (result == ERROR_SUCCESS) {
    QMessageBox messageBox1;
    messageBox1.critical(0,"Error", "Success");
    messageBox1.setFixedSize(500,200);
} else {
    QMessageBox messageBox2;
    messageBox2.critical(0,"Error", q);
    messageBox2.setFixedSize(500,200);
}

我得到的错误:

图片

密钥在我的注册表中的位置:

图片

我认为问题与我将信息放入path变量中的方式有​​关,但我不确定。

标签: c++registrywinreg

解决方案


不要传递Computer\\HKEY_LOCAL_MACHINE给字符串。只是SYSTEM\\CurrentControlSet\\Control\\IDConfigDB\\Hardware Profiles\\0001因为 HKEY_LOCAL_MACHINE 存在于 RegOpenKey 第一个参数中。并且不要尝试仅打开键 RegSetKeyValue() 的键值,用于在此处写入键值,工作代码:

HKEY hKey;
LONG result = RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\IDConfigDB\\Hardware Profiles\\0001", 0, KEY_ALL_ACCESS, &hKey);
cout << result << "\n";

推荐阅读