Python操作Windows注册表完整指南:打开、读写与增删

Noah
Noah
发布时间:2026-10-14 | 3人浏览过
原创

本文详细介绍如何使用Python的win32api模块操作Windows注册表。涵盖打开与关闭注册表项、读取默认值与特定键值、设置与修改项值、以及添加和删除子项的完整流程。通过RegOpenKey、RegCloseKey、RegQueryValueEx、RegSetValueEx等核心函数的实例演示,帮助开发者掌握注册表编程的关键参数与注意事项,适用于系统配置管理与自动化脚本开发。

打开与关闭注册表项

Python操作注册表步骤之1.打开注册表

在执行任何注册表操作之前,首要任务是正确打开目标注册表项。在Python环境中,主要依赖win32api模块提供的RegOpenKey和RegOpenKeyEx两个函数来实现这一目的。这两个函数的原型定义如下所示。

RegOpenKey(key, subKey , reserved , sam) RegOpenKeyEx(key, subKey , reserved , sam)

上述两个函数拥有完全相同的参数结构,具体参数含义解析如下:

key:必须指定为表10-1中列出的预定义根键之一。

subKey:指定需要打开的具体子项路径。

reserved:此参数必须固定为0。

sam:指定对打开的子项执行的操作权限,可选值包括win32con.KEY_ALL_ACCESS(完全访问)、win32con.KEY_READ(只读)或win32con.KEY_WRITE(写入)等。

以下代码实例演示如何打开注册表路径“HKEY_CURRENT_USER\Software”项。


>>> import win32api # 导入win32api模块
>>> import win32con # 导入win32con模块# 使用RegOpenKey打开注册表项
>>> key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,
'Software',0,win32con.KEY_READ)
>>> print key # key为打开的项的句柄 

Python操作注册表步骤之2.关闭注册表

完成对注册表项的操作后,必须及时关闭以释放资源。在Python中,通过调用RegCloseKey函数来关闭之前打开的注册表项。该函数的原型定义如下。

RegCloseKey(key)

该函数仅包含一个参数,其具体含义如下。

key:指代之前已经成功打开的注册表项句柄。

以下代码示例展示了如何关闭一个已打开的注册表项。

# 关闭刚才打开的注册表项

>>> win32api.RegCloseKey(key)

>>> print key

读取注册表项值

Python操作注册表步骤之3.读取项值

在成功打开注册表项后,可以使用RegQueryValue函数读取该项的默认值(即未命名值)。若需读取特定命名的子项值,则应使用RegQueryValueEx函数。这两个函数的原型分别如下。

RegQueryValue(key, subKey ) RegQueryValueEx(key, valueName )

针对RegQueryValue函数,其参数含义解释如下。

key:表示已打开的注册表项的句柄。

subKey:指定需要操作的子项名称。

针对RegQueryValueEx函数,其参数含义解释如下。

key:表示已打开的注册表项的句柄。

valueName:指定需要读取的具体项值名称。

以下代码实例演示了对“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer”项进行读取操作的过程。


>>> import win32api 
>>> import win32con# 打开“HKEY_LOCAL_MACHINE\SOFTWARE
\Microsoft\Internet Explorer”项 
>>> key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,
'SOFTWARE\\Microsoft\\Internet Explorer',0, win32con.KEY_ALL_ACCESS) 
>>> win32api.RegQueryValue(key,'')  
# 读取项的默认值''  
# 输出为空,表示其默认值未设置#读取项值名称为Version的项值数据,
也就是Internet Explorer的版本 
>>> win32api.RegQueryValueEx(key,'Version') ('6.0.2900.2180', 1) 
>>> win32api.RegQueryInfoKey(key)  
# RegQueryInfoKey函数查询项的基本信息(26, 7, 128178812229687500L)  
# 返回项的子项数目、项值数目,以及最后一次修改时间 

设置与修改注册表项值

Python操作注册表步骤之4.设置项值

若需修改或重新配置注册表中某一项的项值,可使用RegSetValueEx函数;若需设置项的默认值,则使用RegSetValue函数。需要注意的是,对于RegSetValueEx函数,若指定的项值不存在,该函数会自动创建该项值;若已存在,则执行修改操作。这两个函数的原型分别如下。

RegSetValueEx(key, valueName, reserved, type, value) RegSetValue(key, subKey, type, value)

针对RegSetValueEx函数,其参数含义解释如下。

key:指定要设置的目标项的句柄。

valueName:指定要设置的项值名称。

reserved:保留参数,通常设为0。

type:指定项值的数据类型。

value:指定所要设置的具体数值。

针对RegSetValue函数,其参数含义解释如下。

key:指定已打开的目标项的句柄。

subKey:指定所要设置的子项名称。

type:指定项值的类型,此处必须为win32con.REG_SZ(字符串类型)。

value:指定项值的数据内容,必须为字符串格式。

以下代码实例演示了如何修改“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer”的默认值,以及其“Version”项值的数据。


# 将“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer”的默认值设为python
>>> win32api.RegSetValue(key,'',win32con.REG_SZ,'python')
# 将其“Version”设置为7.0.2900.2180
>>> win32api.RegSetValueEx(key,'Version',0,win32con.REG_SZ,'7.0.2900.2180') 

添加与删除注册表子项

Python操作注册表步骤之5.添加、删除项

若需向注册表中添加新的子项,可使用RegCreateKey函数;若需删除注册表中的现有子项,则使用RegDeleteKey函数。这两个函数的参数原型分别如下。

RegCreateKey(key, subKey ) RegDeleteKey (key, subKey )

这两个函数的参数含义相同,具体解释如下。

key:指定已打开的注册表项的句柄。

subKey:指定需要执行添加或删除操作的子项名称。

以下代码实例演示了对“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer”项执行添加和删除子项的操作。


# 向“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet 
Explorer”添加子项“Python” 
>>> win32api.RegCreateKey(key,'Python')  
# 新创建的子项的句柄# 删除刚才创建的子项“Python” 
>>> win32api.RegDeleteKey(key,'Python') 

以上就是我们为大家详细介绍的有关Python操作注册表的相关应用方法。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表