Программно изменить реестр через WinApi

291
12 апреля 2017, 15:44

Здравствуйте! Скажу сразу, это проблемная для меня тема. В ветви HKEY_CURRENT_USER нужно изменить значение ColorizationGlassReflectionIntensity, находящееся в Software\\Microsoft\\Windows\\DWM. По стандарту оно равно 30, мне нужно выставить 0. Тип REG_DWORD. Как я делаю:

HKEY hkey;
RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\DWM\\", 0, KEY_ALL_ACCESS, &hkey);
LPTSTR lpName = L"ColorizationGlassReflectionIntensity";
LPTSTR lpValueEx = L"0";
RegSetValueEx(hkey,
    lpName,
    0,
    REG_SZ,
    (LPBYTE)lpValueEx,
    (DWORD)(lstrlen(lpValueEx) + 1)*sizeof(TCHAR));

Но ничего не происходит. GetLastError возвращает 0. Что я делаю не так?

Обновлено

HKEY hkey;
RegOpenKey(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\DWM", &hkey);
LPTSTR lpName = L"ColorizationGlassReflectionIntensity";
LPTSTR lpValueEx = L"0";
RegSetValueEx(hkey, L"ColorizationGlassReflectionIntensity", 0, REG_DWORD, (PBYTE)lpValueEx, (DWORD)sizeof(lpValueEx));

Вот так получается. Вроде меняется но, отсчёт значений которые я передаю, как бы идёт от 30. То есть - я передаю lpValueEx = L"0", ColorizationGlassReflectionIntensity становиться равным 30. Передаю, например 1, параметр соответственно становиться равным 31. Если передать 10 и больше, то параметр принимает какое-то другое значение, а при lpValueEx = L"А" - нет, не 40, а 41 почему-то. Что я опять не так делаю?

Answer 1

Для начала нужно вызвать функцию типа RegOpenKey() и передать в нее subkey (без имени параметра!), а уже потом, используя ее разультат, использовать RegSetValueEx(), передавая в нее имя параметра.

Answer 2

А проблема "0" -> 30 и "A" -> 41 в том, что там тип данных - REG_DWORD, а не строка. Код символа "0" - как раз 0x30, для "A" - 0x41. Пишите туда dword, а не строку.

READ ALSO
Можно ли как-то изменить степень размытия фона эффекта AeroGlass через DWM API?

Можно ли как-то изменить степень размытия фона эффекта AeroGlass через DWM API?

Можно ли как-то изменить степень размытия фона эффекта AeroGlass через DWM API?

283
Нарушение прав доступа при чтении

Нарушение прав доступа при чтении

Помогите, я не могу найти ошибку уже очень давно!

192
Как узнать есть ли петля в графе?

Как узнать есть ли петля в графе?

Не знаю как решить ? Можете сказать как можно решить эту задачу ?

623
QEventLoop и async/await

QEventLoop и async/await

В своем проекте пытаюсь реализовать подобие механизма async/await операций на Qt c использование QEventLoopПриведу простейший пример окна с одной кнопкой,...

311