python学习笔记之注册表修改

上网浏览时,有时候需要修改IE浏览器的代理,每次打开IE设置麻烦。最近在学习Python所以想利用Python简化操作。

首先是上网搜索资料:

参考一:

使用Python给IE设置代理

复制粘贴代码后:运行结果是config.ini is created, modify config.ini and try again 后来发现原因是没有新建一个config.ini文件

后来找到原因是需要自己忘记漏输入cfg.write(open('config.ini', 'a'))  导致浪费了不少时间

从参考一 中知道,使用pywin32修改注册表的方式进行IE代理的设置,并将配置保存在config.ini文件中

ConfigParser模块

读取: cfg.read('config.ini')

cfg.get('dev', 'ProxyServer')

def check_config():
    if not os.path.isfile('config.ini'):
        cfg = ConfigParser.ConfigParser()
        cfg.add_section('dev')
        cfg.set('dev', 'ProxyServer', '192.168.0.6:3128')
        cfg.set('dev', 'ProxyOverride', 'localhost;127.0.0.1')
        cfg.add_section('prepare')
        cfg.set('prepare', 'ProxyServer', '192.168.0.6:3128')
        cfg.set('prepare', 'ProxyOverride', 'localhost;127.0.0.1')
        cfg.write(open('config.ini', 'a'))
        return False
    return True



后来的查找过程中发现可以使用自带的_winreg

参考二:

Python模块——_winreg操作注册表 

_winreg模块记录

_winreg.OpenKey(key,sub_key,res=0,sam=KEY_READ)

proxy_path = r"Software\Microsoft\Windows\CurrentVersion\Internet Settings"

hKey = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, proxy_path)

_winreg.SetValueEx(key,value_name,reserved,type,value)
该函数用于设置key中对应value_name的type和value

_winreg.SetValueEx (hKey, value_name, 0, value_type, value)

 _winreg.QueryValueEx(key,value_name)
该函数用于获取某个key中指定value的data和type,返回类型是tuple

value, type = _winreg.QueryValueEx(hKey, "ProxyEnable")

# -*- coding:UTF-8 -*- 
import ctypes
import _winreg

if 1 == ctypes.windll.user32.MessageBoxW( None, u'是否设置代理?', u'代理设置', 1):
    proxy = "127.0.0.1:8087"
    proxy_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings'
    root = _winreg.HKEY_CURRENT_USER
    hKey = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, proxy_path)
    value, type = _winreg.QueryValueEx(hKey, "ProxyEnable")
    set_proxy = [
  [proxy_path, "ProxyEnable", _winreg.REG_DWORD, 1],
  (proxy_path, "ProxyServer", _winreg.REG_SZ, proxy),
]

    if 1 == ctypes.windll.user32.MessageBoxW( None, u'是否取消代理?', u'代理设置', 1) and value is not 1:
        set_proxy[0][3] = 1
        for keypath, value_name, value_type, value in set_proxy:
            hKey = _winreg.CreateKey(root, keypath)
            _winreg.SetValueEx (hKey, value_name, 0, value_type, value)
        ctypes.windll.user32.MessageBoxW( None, u'代理设置完成', u'代理设置', 0)
    else:
        set_proxy[0][3] = 0
        for keypath, value_name, value_type, value in set_proxy:
            hKey = _winreg.CreateKey(root, keypath)
            _winreg.SetValueEx (hKey, value_name, 0, value_type, value)
        ctypes.windll.user32.MessageBoxW( None, u'代理取消完成', u'代理设置', 0)

else:
    pass



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值