gpt4 book ai didi

c++ - RegOpenKeyEx 和 RegSetValueEx 失败,但我不知道为什么

转载 作者:可可西里 更新时间:2023-11-01 11:07:28 30 4
gpt4 key购买 nike

作为新手 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 解决了您眼前的问题。

关于c++ - RegOpenKeyEx 和 RegSetValueEx 失败,但我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23007307/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com