C++ 将DWORD值写入C++;
我试图在C++中以编程方式向注册表写入dWord值。 我做了一些搜索,发现以前有人问过这个问题。我曾试图遵循他们的解决方案,但却提出了一个非常令人沮丧的问题,据我所知,他们的解决方案并没有解决这个问题 这是我的代码:C++ 将DWORD值写入C++;,c++,windows,registry,registrykey,dword,C++,Windows,Registry,Registrykey,Dword,我试图在C++中以编程方式向注册表写入dWord值。 我做了一些搜索,发现以前有人问过这个问题。我曾试图遵循他们的解决方案,但却提出了一个非常令人沮丧的问题,据我所知,他们的解决方案并没有解决这个问题 这是我的代码: HKEY hKey; LPCWSTR sKeyPath; int iResult; sKeyPath = L"Software\\ABI\\"; iResult = RegOpenKeyEx(HKEY_CURRENT_USER, sKeyPath, NULL, KEY_ALL_A
HKEY hKey;
LPCWSTR sKeyPath;
int iResult;
sKeyPath = L"Software\\ABI\\";
iResult = RegOpenKeyEx(HKEY_CURRENT_USER, sKeyPath, NULL, KEY_ALL_ACCESS, &hKey);
DWORD value = 0x00000003;
iResult = RegSetValueEx(hKey, L"Test", NULL, REG_DWORD, (const BYTE*)value, sizeof(value));
RegCloseKey(hKey);
我做了一些基本调试,发现调用RegSetValueEx
后,iResult
的值是998。我确信此项存在于windows注册表中,因为出于测试目的,我使用regedit.exe手动创建了它。DWORD“Test”的值最初为0x00000009,在我运行程序后保持不变
我不确定我错在哪里
任何帮助都将不胜感激
另外,我还没有在网上找到任何关于错误998的有用网站。我找到的唯一参考资料提到,这是处理注册表时可能出现的最严重错误
顺便说一下,我在Windows8上运行这个程序。我认为这不会改变任何事情,但我以前在Windows 8中遇到过一些奇怪的安全问题。您需要传递值的地址:
iResult = RegSetValueEx(hKey,
L"Test",
NULL,
REG_DWORD,
(const BYTE*)&value, // Change made here.
sizeof(value));
错误代码998
表示:
对内存位置的访问无效
当value
的地址未通过时,其实际值(3
)将用作内存地址,从而导致故障。您可能需要检查RegOpenKeyEx的结果,即使您知道它在那里。这就是说,我相信hmjd有你正确的答案。如果你检查了998的意思,你可能已经知道了<命令提示符中的code>net helpmsg 998
为您提供了对内存位置的无效访问。-0x00000003不是有效的读取地址。谢谢。我不知道有什么方法可以检查命令提示符中的错误。让我在那里学到了一些东西。谢谢。我知道我忽略了一些事情。。。我真的很沮丧。