您好,登录后才能下订单哦!
这篇文章运用简单易懂的例子给大家介绍使用python如何操作注册表,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
注册表是windows管理配置系统运行参数的一个核心数据库。在这个数据库里整合集成了全部系统和应用程序的初始化信息;其中包含了硬件设备的说明、相互关联的应用程序与文档文件、窗口显示方式、网络连接参数、甚至有关系到计算机安全的网络共享设置 。
1.读取
读取用的方法是OpenKey方法:打开特定的key
winreg.OpenKey(key,sub_key,res=0,sam=KEY_READ)
例子:此例子是显示了本机网络配置的一些注册表项
import winreg
key = winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{0E184877-D910-4877-B 4C2-04F487B6DBB7}")
#获取该键的所有键值,遍历枚举
try:
i=0
while 1:
#EnumValue方法用来枚举键值,EnumKey用来枚举子键
name,value,type = _winreg.EnumValue(key,i)
print repr(name),value,type
i+=1
except WindowsError:
print
#假如知道键名,也可以直接取值
value,type = _winreg.QueryValueEx(key,"DhcpDefaultGateway")
print "默认网关地址----",value,type2.创建 修改注册表
创建key:_winreg.CreateKey(key,sub_key)
删除key: _winreg.DeleteKey(key,sub_key)
删除键值:_winreg.DeleteValue(key,value)
给新建的key赋值:_winreg.SetValue(key,sub_key,type,value)
例子:
#!/usr/bin/env python #coding=utf-8 import winreg key=winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r"Software\Microsoft\Windows\CurrentVersion\Explorer") #删除键 _winreg.DeleteKey(key, "Advanced") #删除键值 _winreg.DeleteValue(key, "IconUnderline") #创建新的 newKey = _winreg.CreateKey(key,"MyNewkey") #给新创建的键添加键值 _winreg.SetValue(newKey,"ValueName",0,"ValueContent")
3. 权限问题
写完的Python脚本必须用管理员权限运行,才能对注册表进行写操作。否则会报PermissionError异常
这个时候需要调用Windows的API,重新启动一遍程序 runas administrator,将原来的程序退出。
代码也很简单
from __future__ import print_function
import ctypes, sys
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
# 将要运行的代码加到这里
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
else:#in python2.x
ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)网上搜的都是python2的, 自己写代码的时候总是搞不正确的包,
然后用
pip search winreg
结果是:
winreg-helpers (0.1.1) - Helper functions for reading/writing to the Windows Registry.
装这个包就可以了。
解决问题,每次在链接vpn后,发现browser就打不开了,需要手动去将其去掉。
现在只要执行一下以下这个脚本,就解决了问题:
import winreg
INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
r'Software\Microsoft\Windows\CurrentVersion\Internet Settings',
0, winreg.KEY_ALL_ACCESS)
def set_key(name, value):
_, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, name)
winreg.SetValueEx(INTERNET_SETTINGS, name, 0, reg_type, value)
set_key('ProxyEnable', 0)
#set_key('ProxyOverride', u'*.local;<local>') # Bypass the proxy for localhost
#set_key('ProxyServer', u'X.X.X.X:8080')关于使用python如何操作注册表就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。