Я пытаюсь программно записать значение 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);
Я выполнил базовую отладку и обнаружил, что значение iResult
равно 998 после вызова RegSetValueEx
. Я уверен, что этот ключ присутствует в реестре Windows, потому что я создал его вручную с помощью regedit.exe для целей тестирования. Значение DWORD «Test» изначально равно 0x00000009 и не меняется после запуска моей программы.
Я не уверен, где я ошибаюсь.
Любая помощь будет оценена по достоинству.
P.S. Мне не удалось найти в сети какой-либо полезный сайт по ошибке 998. Единственная ссылка, которую я нашел, упоминает, что это худшая ошибка, которую вы можете получить при работе с реестром.
П.П.С. Между прочим, я запускаю эту программу в Windows 8. Я не думаю, что это что-то меняет, но у меня уже был опыт работы с Windows 8 с некоторыми странными проблемами безопасности.
net helpmsg 998
в командной строке дает вамInvalid access to memory location.
- 0x00000003 не является допустимым адресом для чтения. - person Alex   schedule 06.11.2012