RegOpenKeyEx和RegSetValueEx失败了,但我不知道为什么
RegOpenKeyEx and RegSetValueEx fail, but I dont know why
作为一名刚开始的C++程序员,我想在windows注册表中设置一个值。我创建了这个教科书实现来实现这一点,但我总是返回错误998。我想我错过了一些非常简单明了的东西,但我不知道它是什么。
以普通用户或管理员身份运行此代码没有任何区别。
#define LEDPORT 3
#define SUBKEY "SOFTWARE\PATH\OTHERPATH\"
HKEY key;
if(RegCreateKey(HKEY_LOCAL_MACHINE, TEXT(SUBKEY), &key) == ERROR_SUCCESS)
{
HKEY createKey;
DWORD value = LEDPORT;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT(SUBKEY), NULL, KEY_ALL_ACCESS, &createKey) == ERROR_SUCCESS){
// retVal returns error 998 and the value isn't set
int retVal = RegSetValueEx(createKey, TEXT("PortNumber"), NULL, REG_DWORD, (BYTE *)value, sizeof(value));
RegCloseKey(createKey);
}
}
实际上,这会在LocalMachine\Software\Path\OtherPath中创建上述密钥,但DWORD值"PortNumber"不是。
同样,我认为这是一件很简单的事情,但我花了几个小时思考它可能是什么,但我无法弄清楚。
转换为人类可读的错误代码998是对内存位置的无效访问原因是您的强制转换(BYTE*)value
,将值3(LEDPORT
)重新解释为地址。(BYTE*)&value
解决了您眼前的问题。
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 我不知道为什么这段代码会让核心被转储?
- 没有函数模板的实例与我不知道为什么的参数列表匹配
- if-else 语句仅按特定顺序工作,我不知道为什么
- DirectX 11 引擎在第三次代码改进后没有突然运行,我不知道为什么
- 函数抛出seg错误,我不知道为什么
- 我不知道为什么复制构造函数的调用在 c++ 中不稳定
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- "错误:在'.标记'之前出现预期的主表达式,我不知道为什么
- 我正在制作c ++代码,但发生错误我不知道为什么
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- 我的Arduino串行命令行不起作用,我不知道为什么
- 我正在编写一个拆分为 3 的合并排序,我不知道为什么它不起作用
- 我不知道为什么我的矢量无法推回
- 语法检查器指出一些我不知道为什么的错误
- 我不知道为什么我的字符串无法保存值
- 编写蒙特卡洛集成程序,我不知道为什么我会收到某些错误
- 我不知道为什么会发生堆损坏(关于内存分配问题)
- 库特是空的,我不知道为什么
- C++:我需要在这里包含这个标题,我不知道为什么