Python winreg模块访问被拒绝

hck*_*kn0 4 python registry winreg

这是我的代码:

import winreg as wreg
key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, r'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters',wreg.KEY_ALL_ACCESS)
wreg.SetValueEx(key,"IPEnableRouter", 0, wreg.REG_DWORD, 1)
Run Code Online (Sandbox Code Playgroud)

当我运行这个脚本时,它说

PermissionError: [WinError 5] Access is Denied
Run Code Online (Sandbox Code Playgroud)

如何将值更改为0到1或1到0?

Mar*_*ans 5

要尝试三件事:

  1. 0为您的参数添加一个额外的res.目前你没有设置sam.

  2. 使用注册表编辑器更改密钥的权限,以允许您作为用户进行访问.

Regedit截图

  1. 最好始终请求最低要求的访问权限,因此我建议您使用wreg.KEY_SET_VALUE而不是wreg.KEY_ALL_ACCESS.

所以脚本如下:

import _winreg as wreg

key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, r'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters', 0, wreg.KEY_SET_VALUE)
wreg.SetValueEx(key, "IPEnableRouter", 1, wreg.REG_DWORD, 1)
Run Code Online (Sandbox Code Playgroud)