vks*_*vks 2 python registry python-2.x winreg windows-7-x64
import _winreg as registry
key=registry.OpenKey(registry.HKEY_CURRENT_USER,"Software\Microsoft\Windows\CurrentVersion\Internet Settings",0,registry.KEY_ALL_ACCESS)
proxy=proxy_server+":"+proxy_port
registry.SetValue(key, 'ProxyEnable', registry.REG_SZ, 'dword:00000001')
registry.SetValue(key, 'ProxyServer', registry.REG_SZ, proxy)
Run Code Online (Sandbox Code Playgroud)
我正在使用上面的代码来设置代理。但它没有在 Internet 设置中添加新密钥。而是创建一个新文件夹,并使用提供的值放入一个名为 default 的密钥。

任何人都可以帮我解决这个问题。真的卡住了
虽然我不明白为什么你的代码不能正常工作,我是能够重现问题,以及想出了一个解决办法,这是通过只是做等价的事情_winreg.SetValueEx()功能。
具有该微不足道的更改的代码如下所示。我还在字符串常量中添加了一个r前缀,key因为它包含文字反斜杠字符(但这并没有导致问题)。(请注意,我还更改了一些文字的名称和值,以免与我自己系统注册表中的任何内容发生冲突。)
import _winreg as registry
proxy_server = 'some_proxy_server' # dummy value
proxy_port = 'some_proxy_port' # dummy value
key = registry.OpenKey(registry.HKEY_CURRENT_USER,
r"Software\Microsoft\Windows\CurrentVersion\Internet Settings",
0, registry.KEY_ALL_ACCESS)
proxy = proxy_server + ":" + proxy_port
# SetValue doesn't work for some reason...
#registry.SetValue(key, '_ProxyEnable', registry.REG_SZ, 'dword:00000001')
#registry.SetValue(key, '_ProxyServer', registry.REG_SZ, proxy)
# but SetValueEx does work
registry.SetValueEx(key, "_ProxyEnable", 0, registry.REG_SZ, "dword:00000001")
registry.SetValueEx(key, "_ProxyServer", 0, registry.REG_SZ, proxy)
Run Code Online (Sandbox Code Playgroud)
我还必须评论说,设置ProxyEnable为字符串值"dword:00000001"而不是REG_DWORD值1似乎有点奇怪……但这正是您的代码试图执行的操作。
