l3u*_*fly 2 c++ windows registry dword registrykey
我试图在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);
Run Code Online (Sandbox Code Playgroud)
我做了一些基本的调试,发现iResult我打电话后的值是998 RegSetValueEx.我确信这个密钥存在于Windows注册表中,因为我使用regedit.exe手动创建它以进行测试.DWORD"Test"的值最初是0x00000009,在运行程序后没有变化.
我不确定我错在哪里.
任何帮助,将不胜感激.
PS我没有设法在网上找到任何有用的网站错误998.我发现的唯一参考提到这是处理注册表时可以得到的最严重的错误.
PPS顺便说一句,我在Windows 8上运行这个程序.我不认为这会改变任何东西,但我之前遇到过一些奇怪的安全问题.
hmj*_*mjd 11
你需要通过地址的value:
iResult = RegSetValueEx(hKey,
L"Test",
NULL,
REG_DWORD,
(const BYTE*)&value, // Change made here.
sizeof(value));
Run Code Online (Sandbox Code Playgroud)
错误代码998表示:
对内存位置的访问无效.
当value未传递地址时,其实际值(3)被用作内存地址,从而导致失败.
| 归档时间: |
|
| 查看次数: |
5998 次 |
| 最近记录: |