使用python如何操作注册表

  介绍

这篇文章运用简单易懂的例子给大家介绍使用python如何操作注册表,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

,,,注册表是windows管理配置系统运行参数的一个核心数据库。在这个数据库里整合集成了全部系统和应用程序的初始化信息;其中包含了硬件设备的说明,相互关联的应用程序与文档文件,窗口显示方式,网络连接参数,甚至有关系到计算机安全的网络共享设置。

<强> 1。读取

读取用的方法是OpenKey方法:打开特定的关键

winreg.OpenKey (sub_key,关键res=0,山姆=KEY_READ)

例子:此例子是显示了本机网络配置的一些注册表项

进口winreg
  关键=winreg.OpenKey (_winreg.HKEY_LOCAL_MACHINE r"系统\ \ CurrentControlSet \ Services \ Tcpip \参数接口\ {0 e184877 d910 - 4877 b 4 c2-04f487b6dbb7}“)
  #获取该键的所有键值,遍历枚举
  试一试:
  我=0
  而1:
  # EnumValue方法用来枚举键值,EnumKey用来枚举子键
  名称、值类型=_winreg.EnumValue(关键,我)
  打印repr(名称)、价值类型
  我+=1
  除了WindowsError:
  打印
  #假如知道键名,也可以直接取的值
  值类型=_winreg.QueryValueEx(键,“DhcpDefaultGateway")
  打印“默认网关地址——“值,类型

<强> 2。创建修改注册表

创建关键:_winreg.CreateKey(关键,sub_key)

删除关键:_winreg.DeleteKey(关键,sub_key)

删除键值:_winreg.DeleteValue(键值)

给新建的重要赋值:_winreg.SetValue (sub_key,关键类型、价值)

例子:

# !/usr/bin/env python   #=utf - 8编码   进口winreg      关键=winreg.OpenKey (_winreg.HKEY_CURRENT_USER r"微软软件\ \ Windows \ CurrentVersion \ Explorer")   #删除键   _winreg。DeleteKey(键,“Advanced")   #删除键值   _winreg。DeleteValue(键,“IconUnderline")   #创建新的   newKey=_winreg.CreateKey(键,“MyNewkey")   #给新创建的键添加键值   _winreg.SetValue (newKey,“ValueName" 0“ValueContent")

<强> 3。权限问题

写完的Python脚本必须用管理员权限运行,才能对注册表进行写操作。否则会报PermissionError异常
这个时候需要调用Windows的API,重新启动一遍程序runas管理员,将原来的程序退出。

代码也很简单

  进口ctypes,系统
  
  def is_admin ():
  试一试:
  返回ctypes.windll.shell32.IsUserAnAdmin ()
  除了:
  返回假
  如果is_admin ():
  #将要运行的代码加到这里
  其他:
  如果系统。version_info [0]==3:
  ctypes.windll.shell32。ShellExecuteW(没有,“runas" sys。可执行文件,__file__,没有,1)
  其他:# python2.x
  ctypes.windll.shell32。ShellExecuteW(没有,u" runas" unicode (sys.executable), unicode (__file__)没有,1)

网上搜的都是python2的,自己写代码的时候总是搞不正确的包,
然后用

 pip搜索winreg 

结果是:

winreg-helpers(0.1.1) -辅助功能Windows注册表的读/写。

装这个包就可以了。

解决问题,每次在链接vpn后,发现浏览器就打不开了,需要手动去将其去掉。
现在只要执行一下以下这个脚本,就解决了问题:

进口winreg
  
  INTERNET_SETTINGS=winreg.OpenKey (winreg.HKEY_CURRENT_USER,
  " # 39;微软软件\ \ Windows \ CurrentVersion \网络设置,,
  0,winreg.KEY_ALL_ACCESS)
  
  def set_key(名称,值):
  _,reg_type=winreg。QueryValueEx (INTERNET_SETTINGS名称)
  winreg。SetValueEx (INTERNET_SETTINGS、名称、0 reg_type值)
  
  set_key (& # 39; ProxyEnable& # 39;, 0)
  # set_key (& # 39; ProxyOverride& # 39; u # 39; *。local; & lt; local> & # 39;) #绕过代理为localhost
  # set_key (& # 39; ProxyServer& # 39; u # 39; X.X.X.X: 8080 & # 39;) 

关于使用python如何操作注册表就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

使用python如何操作注册表