使用_winreg编辑REG_BINARY

时间:2014-07-16 21:16:06

标签: python windows registry winreg

我正在尝试制作一个简单的程序,可以使用_winreg在Windows中启用或禁用代理设置。注册表中有2个设置我需要更改才能执行此操作。第一个是ProxyEnableREG_DWORD,第二个是DefaultConnectionSettings,是REG_BINARY。我可以访问这两个键,并且对dword进行更改没有问题。我遇到问题的地方是第二个键,我可以打开并查询它,但我不知道如何更改它。这是一个字符串,所以我想我可以切片,只需添加我想要的位,但原始值为'\x03',我需要将其更改为'\ x09',当进入python时变为'\ t '因为我猜它是逃脱的'水平标签'。我对Python很陌生,所以我意识到我可能完全以错误的方式做这件事,任何建议都会受到赞赏。

key = wreg.OpenKey(wreg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Connections",0, wreg.KEY_ALL_ACCESS)

这是我需要帮助的关键,我可以打开并阅读它,但我不知道如何正确使用它。我基本上只需要将第9个字节从03更改为09,然后在我想重新启用代理时返回03.

1 个答案:

答案 0 :(得分:2)

由于您已打开注册表项,因此您需要获取DefaultConnectionSettings注册表值:

(value, regtype) = wreg.QueryValueEx(key, "DefaultConnectionSettings")

您现在需要更改值中的单个字节。不幸的是,该值将表示为Python字符串,并且在Python中字符串是不可变的。因此,您需要创建一个更改了一个字节的新字符串:

if regtype == wreg.REG_BINARY:
    value = value[:8] + chr(0x09) + value[9:]

最后将新值写回注册表:

    wreg.SetValueEx(key, "DefaultConnectionSettings", None, regtype, value)