Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将DWORD值写入C++;_C++_Windows_Registry_Registrykey_Dword - Fatal编程技术网

C++ 将DWORD值写入C++;

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

我试图在C++中以编程方式向注册表写入dWord值。 我做了一些搜索,发现以前有人问过这个问题。我曾试图遵循他们的解决方案,但却提出了一个非常令人沮丧的问题,据我所知,他们的解决方案并没有解决这个问题

这是我的代码:

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不是有效的读取地址。谢谢。我不知道有什么方法可以检查命令提示符中的错误。让我在那里学到了一些东西。谢谢。我知道我忽略了一些事情。。。我真的很沮丧。