【问题标题】:Set proxy on Windows 10 with Python and winreg使用 Python 和 winreg 在 Windows 10 上设置代理
【发布时间】:2021-09-04 12:53:24
【问题描述】:

我正在尝试使用模块winreg 来更改存储在SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings 中的ProxyEnable、ProxyOverride 和ProxyServer 的值。

我使用以下代码

INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
                                   r'SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings',
                                   0, winreg.KEY_SET_VALUE)

def __set_winreg_key__(name, value):
    _, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, name)
    winreg.SetValueEx(INTERNET_SETTINGS, name, 0, reg_type, value)

ip = "x.x.x.x"
port = 8080

__set_winreg_key__('ProxyEnable', 1)
__set_winreg_key__('ProxyOverride', '*.local;<local>')
__set_winreg_key__('ProxyServer', f"{ip}:{port}")

但我收到 PermissionError: [WinError5] Access Denied。

我使用 PyCharm 执行脚本,即使我以 admin 身份运行它,错误仍然存​​在。

我的设置是:

  • Python 3.8(64 位)
  • PyCharm 社区版 2020.1
  • Microsoft Windows 10 家庭版

【问题讨论】:

    标签: python proxy winreg


    【解决方案1】:

    访问被拒绝,因为密钥没有“打开查询”。

    添加winreg.KEY_QUERY_VALUE标志:

    INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
                                       r'SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings',
                                       0, winreg.KEY_SET_VALUE | winreg.KEY_QUERY_VALUE)
    

    【讨论】:

    • 谢谢,这似乎成功了,我注意到在我的注册表编辑器中的文件夹Internet Settings 中没有ProxyOverride 和ProxyServer 键,这怎么可能?
    • 我认为这些键默认情况下不存在。您需要先创建它们,然后再设置它们的值。
    猜你喜欢
    • 2016-05-21
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2016-07-16
    • 2017-02-15
    • 2020-04-25
    • 2020-10-02
    • 1970-01-01
    相关资源
    最近更新 更多