Здравствуйте! Скажу сразу, это проблемная для меня тема. В ветви 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 почему-то. Что я опять не так делаю?
Для начала нужно вызвать функцию типа RegOpenKey() и передать в нее subkey (без имени параметра!), а уже потом, используя ее разультат, использовать RegSetValueEx(), передавая в нее имя параметра.
А проблема "0" -> 30 и "A" -> 41 в том, что там тип данных - REG_DWORD, а не строка. Код символа "0" - как раз 0x30, для "A" - 0x41. Пишите туда dword, а не строку.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости