c++ - 我的 RegSetValueA 函数返回 ERROR_SUCCESS 但不起作用
问题描述
我的代码:
HKEY hKey;
char *path = "SYSTEM\\CurrentControlSet\\Control\\IDConfigDB\\Hardware Profiles\\0001";
LONG result1 = RegOpenKeyExA(HKEY_LOCAL_MACHINE, path, 0, KEY_ALL_ACCESS, &hKey);
QString q = QString::number(result1);
if (result1 == ERROR_SUCCESS) {
char buffer[39];
DWORD b = sizeof(buffer);
LONG result12 = RegGetValueA(hKey, NULL, "HwProfileGuid", RRF_RT_REG_SZ, NULL, buffer, &b);
if (result12 == ERROR_SUCCESS) {
std::string j;
LONG result13;
const std::vector<int> serial1{8, 4, 4, 4, 12};
std::string l = "{" + gen_random(serial1, "-") + "}";
const char *p = l.c_str();
if (p == buffer) {
j = "{" + gen_random(serial1, "-") + "}";
const char *i = j.c_str();
result13 = RegSetValueA(hKey, "HwProfileGuid", REG_SZ, i, sizeof(i));
} else {
result13 = RegSetValueA(hKey, "HwProfileGuid", REG_SZ, p, sizeof(p));
}
if (result13 == ERROR_SUCCESS) {
QMessageBox messageBox2;
messageBox2.critical(0,"Error", "Success");
messageBox2.setFixedSize(500,200);
} else {
QString q = QString::number(result13);
QMessageBox messageBox2;
messageBox2.critical(0,"Error", q);
messageBox2.setFixedSize(500,200);
}
} else {
QString q = QString::number(result12);
QMessageBox messageBox2;
messageBox2.critical(0,"Error", q);
messageBox2.setFixedSize(500,200);
}
} else {
QMessageBox messageBox2;
messageBox2.critical(0,"Error", q);
messageBox2.setFixedSize(500,200);
}
我的操作系统是 Windows 64 位,编译器没有显示任何错误,并且由于某种原因,该函数可以创建一个新值,但不能更改现有值的数据。
我已经编辑并添加了完整的代码,因此您可以看到我正在处理的数据类型。
解决方案
您需要使用RegSetValueExA
并调用:
BYTE* p = (BYTE*)l.c_str();
result13 = RegSetValueExA(hKey, "HwProfileGuid",0, REG_SZ, p, l.size() + 1);.
它对我有用。
推荐阅读
- nxc - 如何在 nxc 中拆分字符串
- python - 在不可迭代函数上执行进度条 - Python
- javascript - 在用户输入的字符串中搜索数组的任何值
- javascript - 当我从终端运行 gulp 脚本时,为什么我的 gulpfile.js 没有编译为 scripts.js?
- kendo-ui - Telerik Kendo UI Of area Chart 如何显示区域的深色
- c++ - 使用构造函数打印特定数字的问题
- javascript - 是否有可能推迟 Fade 的过渡?
- image - 通过 VkSubpassDependency 进行多个附件布局转换
- javascript - 页面刷新时如何保持变量的值
- docker - 如何确定扩容服务的副本数