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


Posted in Python onFebruary 05, 2020

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

对注册表进行操作前,必须打开注册表。在Python中,可以使用以下两个函数: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会添加该项值,如果存在,则修改该项值。其函数原型分别如下所示。

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 相关文章推荐
python下载文件时显示下载进度的方法
Apr 02 Python
Python中对元组和列表按条件进行排序的方法示例
Nov 10 Python
Python中进程和线程的区别详解
Oct 29 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
Python函数式编程实例详解
Jan 17 Python
Python实现结构体代码实例
Feb 10 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Python基础之Socket通信原理
Apr 22 Python
pytorch 如何使用amp进行混合精度训练
May 24 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 Python
Python类继承和多态原理解析
Feb 05 #Python
Python模块 _winreg操作注册表
Feb 05 #Python
python3操作注册表的方法(Url protocol)
Feb 05 #Python
Python tkinter模版代码实例
Feb 05 #Python
Python Scrapy框架第一个入门程序示例
Feb 05 #Python
python lambda函数及三个常用的高阶函数
Feb 05 #Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 #Python
You might like
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
js实现单行文本向上滚动效果实例代码
2013/11/28 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
javascript的几种写法总结
2016/09/30 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python3实现逐字输出的方法
2019/01/23 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
python代码能做成软件吗
2020/07/24 Python
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
中专毕业生自荐信
2013/11/16 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
大学生毕业个人总结
2015/02/15 职场文书
生死抉择观后感
2015/06/09 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android
MySQL 原理与优化之Update 优化
2022/08/14 MySQL