Установка значения DWORD в реестре - PullRequest
5 голосов
/ 25 марта 2011

Я пытаюсь установить значение DWORD в реестре. Я сделал так, чтобы он работал с текстовым значением, но теперь я хочу установить другое значение с числовым (0). Но это не пишет.
Это мой код:

RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\pager", 0, KEY_ALL_ACCESS, &hKey);
RegSetValueEx(hKey, TEXT("Save"), 0, REG_SZ, (const BYTE*)0x00, sizeof(DWORD));
RegCloseKey(hKey);

PS: ключ уже существует со значением 1, поэтому я пытаюсь переопределить его значением 0 (я не создаю новый).

Ответы [ 3 ]

19 голосов
/ 25 марта 2011

Самая большая ошибка в (const BYTE*)0x00: вы приводите 0x00 к BYTE *, что означает, что в основном вы передаете указатель NULL.Вместо этого вы должны создать переменную DWORD, поместить в нее значение, которое вы хотите сохранить в реестре, и передать вместо него указатель 0x00.

Кроме того, вы должны изменить REG_SZв REG_DWORD, если вы хотите сохранить значение DWORD, в противном случае DWORD будет интерпретироваться как (несколько странная) строка.

RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\pager", 0, KEY_ALL_ACCESS, &hKey);
DWORD value=0;
RegSetValueEx(hKey, TEXT("Save"), 0, REG_DWORD, (const BYTE*)&value, sizeof(value));
RegCloseKey(hKey);

Но, самое главное, вы должны действительно проверитьвозвращайте значения этих функций: теперь вы просто «надеетесь», что они работают, игнорируя любой сбой и продолжая выполнение инструкций, что может привести к неожиданным ситуациям.

Если вы проверили коды ошибок, вы бы заметилисразу же, что это функция RegSetValueEx, которая выходит из строя, и код ошибки мог быть чем-то вроде «неверного параметра», который указывал бы вам в правильном направлении.

3 голосов
/ 25 марта 2011

Для параметра dwType для RegSetValueEx вы должны использовать REG_DWORD вместо REG_SZ.

Также необходимо передать действительный указатель на DWORD для параметра lpData.

2 голосов
/ 25 марта 2011

Измените параметр REG_SZ на REG_DWORD.Этот параметр указывает тип значения, которое будет записано в реестр.

Полный список типов см. В http://msdn.microsoft.com/en-us/library/ms724884(v=vs.85).aspx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...