`
daniel_tu
  • 浏览: 184095 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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.html

 

1.1 读取

 

import _winreg

key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r"Software\Microsoft\Windows\CurrentVersion\Explorer")

#获取该键的所有键值,因为没有方法可以获取键值的个数,所以只能用这种方法进行遍历
try:
    i = 0
    while1:
		#EnumValue方法用来枚举键值,EnumKey用来枚举子键
		name, value, type = _winreg.EnumValue(key, i)
		print repr(name),
        i +=1
except WindowsError:
	print

#如果知道键的名称,也可以直接取值
value, type = _winreg.QueryValueEx(key, "EnableAutoTray")

 1.2 创建、修改

 

 

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")

 1.3 访问远程注册表

 

 

#第二参数必须是HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE等预先定义好的值,拿到返回的key后就可以进行操作了
key = _winreg.ConnectRegisty("IP地址或者机器名",_winreg.HKEY_CURRENT_USER)

 

 

2、 win32api

 

    win32api 和 _winreg 的方法很类似,一般是多了一个前缀"Reg",使用方法很基本上一样,这里就不给具体的Demo代码了。

 

    就一般的应用来说,使用_winreg就足够了,但是_winreg有一个问题,如果Python是32位的,并且是运行在64位的操作系统上时就会有一点 小问题,由于操作系统会进行注册表的重定向,32位的程序无法访问64位应用程序的注册表。在Python2.6以前这个问题都没有解决,在 Python2.7中通过补丁的形式修正了这个问题(http://bugs.python.org/issue7347)。

 

    通过例子来说明一下这个问题,假设我们的操作系统是64位的,然后在上面安装了32位的Python,看如下的Python代码:

 

import _winreg

key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r"Software\Microsoft\Windows")
newKey = _winreg.CreateKey(key,"MyNewkey")

 

 

    上面的代码的执行不会像预想那样创建如下的键:

 

    "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows"

 

    而是会创建如下的键:

 

    "HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows"

 

    因为在64位的windows操作系统下,64位的程序和32位程序的注册表是分开的,32位应用程序对注册表的操作(读、写)都会被重定向到 Wow6432Node下面, 64位应用程序的访问注册表的行为则没有变化。因此如果我们的32位应用程序确实要访问64位程序所用到的注册表的话,就会有点问题。由于_winreg 本身的问题,它对这种情况的支持不太充分,对windows api的封装有一些bug,这个时候就需要用到 win32api 模块。

 

    下面用win32api提供的方法来修改上面的代码如下:

 

import win32api
import win32con

key = win32api.RegCreateKeyEx(win32con.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Windows", win32con.WRITE_OWNER |win32con.KEY_WOW64_64KEY|win32con.KEY_ALL_ACCESS)
win32api.RegSetValueEx (key,"MyNewkey", 0, win32con.REG_SZ, keyValue)

    上面的win32con.KEY_WOW64_64KEY意思就是直接访问64位注册表,不要进行重定向,默认的参数是win32con.KEY_WOW64_32KEY。

 

分享到:
评论

相关推荐

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

    Python操作注册表步骤之1.打开注册表 对注册表进行操作前,必须打开注册表。在Python中,可以使用以下两个函数:RegOpenKey和RegOpenKeyEx。其函数原型分别如下所示。 RegOpenKey(key, subKey , reserved , sam)...

    Python对电脑注册表进行操作

    本代码用于对电脑的注册表进行操作; 安装Python的Scrapy库时若碰到Python version2.7 required,which was not found in the register

    python 向注册表注册自己

    Python是一种强大的编程语言,它不仅可用于开发各种应用程序,还可以与操作系统进行深度交互,例如操作Windows系统的注册表。...在实际项目中,务必谨慎操作注册表,以免误删关键信息导致系统问题。

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

    使用python操作注册表的方法最近学习了一下,现在做一下笔记,由于对Python语言的使用还不是很熟练,所以写不出高大上的结构,但是解决问题搓搓有余了。 说道注册表顺便也说一说环境变量的修改(放下下一节讲),...

    python读取注册表中值的方法

    该模块提供了一种基础接口来操作注册表数据库,支持各种基本的操作,如打开、查询、修改注册表键等。 #### 三、注册表的基础概念 在深入了解如何使用Python读取注册表之前,先了解一些关于注册表的基本概念: - **...

    Python删除注册表键值一例

    有时出于某种需要,希望用Python对注册表进行查找,创建,删除等操作。 本例演示了如何用Python删除注册表键值,并用另一个小程序演示如何注册该程序到注册表中,使其每次开机都会执行: RemoveValue.py: 删除指定...

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

    在Python中,我们可以通过`_winreg`模块(Python 3.0之后更名为`winreg`)来操作注册表。该模块提供了创建、打开、查询和修改注册表键值的功能。 #### 三、示例代码分析 本示例中涉及的关键步骤如下: 1. **复制...

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

    通过Python操作注册表有两种方式,第一种是通过Python的内置模块 _winreg;另一种方式就是Win32 Extension For Python 的win32api模块,但是需要进行额外的安装。这里主要给出一些_winreg和win32api的Demo代码。   ...

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

    为了能够顺利地使用Python操作注册表,首先需要安装`pywin32`库。这是一个强大的库,提供了许多Windows特有的API接口,包括注册表操作。 ##### 安装`pywin32`库 可以通过pip命令来安装`pywin32`: ```bash pip ...

    PB相关于注册表的操作

    在Windows操作系统中,注册表是存储系统和应用程序设置的关键数据库。本源代码示例中,PB被用来执行对注册表的读写操作,包括插入和删除,这对于配置管理、软件安装卸载以及系统监控等场景至关重要。 注册表操作...

    进程控制,ini操作,注册表操作,MD5

    在IT领域,进程控制、ini文件操作、注册表操作以及MD5散列是四个关键的知识点,它们在软件开发和系统管理中起着至关重要的作用。 首先,让我们深入理解进程控制。在计算机操作系统中,进程是执行中的程序实例,包含...

    注册表HIVE操作

    通过编写自定义Hive UDF(用户定义函数)或者UDAF(用户定义聚合函数),开发者可以解析和操作注册表中的数据,将这些数据导入到Hive表中进行分析。 2. **代码实现**: 提供的“详细的代码”很可能是实现了上述...

    python实现的读com串口

    Python中,我们可以使用`pySerial`库来实现对COM串口的操作。`pySerial`库提供了一系列的API,方便开发者进行串口打开、关闭、读写以及设置串口参数(如波特率、数据位、停止位、校验位等)。 以下是使用`pySerial`...

    Regshot注册表快照---绿色免安装

    注册表是Windows操作系统中的一个重要组成部分,存储着系统和应用程序的配置信息,包括软件设置、硬件设备信息等。由于注册表的复杂性和敏感性,了解其工作原理以及如何安全地进行监控显得尤为重要。 Regshot工作...

Global site tag (gtag.js) - Google Analytics