如何利用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,type

2.创建 修改注册表

创建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操作注册表的详细内容,更多关于python 注册表的资料请关注我们其它相关文章!

(0)

相关推荐

  • 操作Windows注册表的简单的Python程序制作教程

    通过Python操作注册表有两种方式,第一种是通过Python的内置模块 _winreg:另一种方式就是Win32 Extension For Python 的win32api模块,但是需要进行额外的安装.这里主要给出一些_winreg和win32api的Demo代码. 1. _winrg 可以参考官方的参考文档: http://docs.python.org/library/_winreg.html http://www.python.org/doc/2.6.2/library/_winreg

  • 将python2.7添加进64位系统的注册表方式

    解决问题:python2.7无法在注册表中被识别,即在安装NumPy和SciPy等出现"python version 2.7 required, which was not found in register"的问题. 解决方法:新建一个"register.py"的文件,复制以下内容,通过powershell的命令"python register.py"运行,看到"Python 2.7 is now registered!"即

  • 将python安装信息加入注册表的示例

    背景 重装系统,发现之前装在E盘的python可以直接使用,就只是将python的安装目录加入到环境变量中,也一直没有管它,今天跟天软交互的时候发现一直不成功,猜测可能是没有注册表信息. 从网上找的一段代码,直接复制运行即可,留存备查. 代码 py3.5.2 import sys from winreg import * # tweak as necessary version = sys.version[:3] installpath = sys.prefix regpath = "SOFTW

  • Python实现操纵控制windows注册表的方法分析

    本文实例讲述了Python实现操纵控制windows注册表的方法.分享给大家供大家参考,具体如下: 使用_winreg模块的话 基本概念: KEY 键 Value 值 函数和作用: CloseKey() - 关闭一个Key ConnectRegistry() - 链接到其他机器的注册表 CreateKey() - 创建一个Key DeleteKey() - 删除一个Key DeleteValue() - 删除一个Key里面的值(value) EnumKey() - 为已经打开的Key里面的子键建

  • python读取注册表中值的方法

    在Python的标准库中,_winreg.pyd可以操作Windows的注册表,另外第三方的win32库封装了大量的Windows API,使用起来也很方便.不过这里介绍的是使用_winreg操作注册表,毕竟是Python自带的标准库,无需安装第三方库. 下面的例子是通过Python获取Windows XP下已经安装的补丁号.Windows的补丁号都在"HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Updates"下,通过循环下面所有的目录节点,如果找

  • Python模块 _winreg操作注册表

    用python操作修改windows注册表,显然要比用C或者C++简单. 主要参考资料:官方文档:https://docs.python.org/zh-cn/3/library/winreg.html 通过python操作注册表主要有两种方式,一种是通过python的内置模块 _winreg,另一种方式就是 Win32 Extension For Python的win32api模块.这里主要简单看看用内置模块 _winreg如何操作注册表. 1.读取 读取用的方法是OpenKey方法:打开特定的

  • python3操作注册表的方法(Url protocol)

    使用python操作注册表的方法最近学习了一下,现在做一下笔记,由于对Python语言的使用还不是很熟练,所以写不出高大上的结构,但是解决问题搓搓有余了. 说道注册表顺便也说一说环境变量的修改(放下下一节讲),里面有许多相似的地方,我觉得放在一起说会比较合适. 操作注册表 操作注册表主要引入winreg包,winreg包是python3自带的包,python2的名字和python3有区别_winreg,在这里只关注python3 key = winreg.OpenKeyEx(winreg.HKE

  • python修改注册表终止360进程实例

    本文实例讲述了python修改注册表终止360进程的实现方法.分享给大家供大家参考. 具体实现代码如下: import _winreg import os import shutil #复制自身 shutil.copyfile(K3.exe,c:WINDOWSsystem32K3.exe) #把360启动改为自身 run = _winreg.OpenKey( _winreg.HKEY_LOCAL_MACHINE, "SOFTWAREMicrosoftWindowsCurrentVersionRu

  • Python操作注册表详细步骤介绍

    Python操作注册表步骤之1.打开注册表 对注册表进行操作前,必须打开注册表.在Python中,可以使用以下两个函数:RegOpenKey和RegOpenKeyEx.其函数原型分别如下所示. RegOpenKey(key, subKey , reserved , sam)RegOpenKeyEx (key, subKey , reserved , sam) 两个函数的参数一样.参数含义如下: key:必须为表10-1中列出的项. subKey:要打开的子项. reserved:必须为0. sa

  • Python实现修改IE注册表功能示例

    本文实例讲述了Python实现修改IE注册表功能.分享给大家供大家参考,具体如下: 一.代码 # -*- coding:utf-8 -*- #! python3 import datetime import string import win32api import win32con keyname = 'Software\Microsoft\Internet Explorer\Main' page = 'https://hao.360.cn/' today = datetime.date.to

随机推荐