в реестре не изменяется значение, а создается новая директория

Рейтинг: 0Ответов: 1Опубликовано: 31.05.2023

Наверное это довольно глупая ошибка, но я 2 битых дня смотрю на это и не понимаю в чем она. Программа должна заменять значение в уже созданном реестре, но вместо этого создает новую папку. Вот код:

import winreg


color = '10 10 10'

change_way = r'Control Panel\Colors'

key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, change_way)
winreg.SetValue(key, 'Hilight', winreg.REG_SZ, color)
winreg.CloseKey(key)

Ответы

▲ 0Принят

Используйте winreg.SetValueEx:

color = '10 10 10'

change_way = r'Control Panel\Colors'

key = winreg.OpenKey(
    winreg.HKEY_CURRENT_USER,
    change_way,
    access=winreg.KEY_SET_VALUE # <--
)
winreg.SetValueEx( # <--
    key,
    'Hilight',
    0, # <--
    winreg.REG_SZ,
    color
)
winreg.CloseKey(key)

А еще, можно использовать with, чтобы не забыть закрыть ключ реестра.

with winreg.OpenKey(winreg.HKEY_CURRENT_USER, change_way, access=winreg.KEY_SET_VALUE) as key:
    winreg.SetValueEx(key, 'Hilight', 0, winreg.REG_SZ, color)