Работа с реестром в Python

Я хочу изменить значение реестра. Я попробовал следующее, но это не работает. Я не знаю, в чем проблема в моем коде!

KeyVal = r'SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{B3D42F82-AE5B-4AE1-939C-E958D13732D2}Machine\Software\Policies\Microsoft\Windows\RemovableStorageDevices\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\Deny_Execute'

try:
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,KeyVal,0, winreg.KEY_ALL_ACCESS)
    key = winreg.CreateKey(winreg.HKEY_CURRENT_USER,KeyVal )
    winreg.SetValueEx(key,"Deny_Execute",0,winreg.REG_DWORD,0)
    winreg.CloseKey(key)
except:
    pass

1 ответ

Первая большая проблема - это ваш анти-шаблон:

try:
   <some code>
except:
    pass

поэтому, если возникает какая-либо ошибка, вы не знаете об ошибке. Таким образом, вы должны правильно обработать исключение, например, распечатав сообщение об ошибке

try:
   <some code>
except Exception as e:
    print(str(e))

реальная проблема, с которой вы здесь сталкиваетесь, заключается в том, что вы должны запускать свой сценарий с повышенными привилегиями (как администратор), поскольку вы запрашиваете доступ на запись к разделу системного реестра.

Но вы не можете увидеть ошибку "отказано в доступе" из-за неверного способа перехвата всех исключений.

Другие вопросы по тегам