Python操作Windows注册表完整指南:打开、读写与增删
本文详细介绍如何使用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操作注册表的相关应用方法。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













