与注册表操作相关的函数可以分为打开注册表、关闭注册表、读取项值、c添加项值、添加项,以及删除项等几类。

表1   Windows注册表基本项

项名

描述

HKEY_CLASSES_ROOT

是HKEY_LOCAL_MACHINE\Software 的子项,保存打开文件所对应的应用程序信息

HKEY_CURRENT_USER

是HKEY_USERS的子项,保存当前用户的配置信息

HKEY_LOCAL_MACHINE

保存计算机的配置信息,针对所有用户

HKEY_USERS

保存计算机上的所有以活动方式加载的用户配置文件

HKEY_CURRENT_CONFIG

保存计算机的硬件配置文件信息

通过使用win32api模块和win32con模块,python可以方便地访问注册表,并对其进行打开、关闭、添加项、删除项,以及添加、修改项值等操作。

1. 打开注册表

RegOpenKey(key,   subkey,   reserved,   sam)

RegOpenKeyEx(key,   subkey,   reserved,   sam)

两个函数的参数一样。参数含义如下:

l Key:必须为表1中列出的项。

l SubKey:要打开的子项。

l Reserved:必须为0。

l Sam:对打开的子项进行的操作,包括win32con.KEY_ALL_ACCESS、win32con.KEY_READ、win32con.KEY_WRITE等

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

如 key=win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software',0,win32con.KEY_READ)

print key

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

2. 关闭注册表

RegCloseKey(key)

其参数只有一个,其含义如下:

l Key:已经打开的注册表项的句柄。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

如win32api.RegCloseKey(key)

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

3. 读取项值

RegQueryValue(key,subKey) 读取项的默认值

RegQueryValueEx(key,valueName) 读取某一项值

对于RegQueryValue,其参数含义如下:

l Key:已打开的注册表项的句柄。

l subKey:要操作的子项。

对于RegQueryValueEx,其参数含义如下:

l Key:已经打开的注册表项的句柄。

l valueName:要读取的项值名称。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

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)   # 返回项的子项数目、项值数目,以及最后一次修改时间

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

4. 设置项值

RegSetValueEx(key,valueName,reserved,type,value) 要修改或重新设置注册表某一项的项值。如果项值存在,则修改该项值,如果不存在,则添加该项值。

RegSetValue(key,subKey,type,value) 设置项的默认值

对于RegSetValueEx,其参数含义如下:

l Key:要设置的项的句柄。

l valueName:要设置的项值名称。

l Reserved:保留,可以设为0。

l Type:项值的类型。

l Value:所要设置的值。

对于RegSetValue,其参数含义如下:

l Key:已经打开的项的句柄。

l subKey:所要设置的子项。

l Type:项值的类型,必须为win32con.REG_SZ。

l Value:项值数据,为字符串。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

# 将“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')

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

5. 添加、删除项

RegCreateKey(key,subKey) 向注册表中添加项

RegDeleteKey(key,subKey) 删除注册表中的项

其参数含义相同,参数含义分别如下:

l Key:已经打开的注册表项的句柄。

subKey:所要操作(添加或删除)的子项。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

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

6. 错误处理

ImportError: No module named win32api出现异常

实际是需要安装和自己python兼容的win32all 在http://starship.python.net/crew/mhammond/downloads/ 可以下载适合自己的版本,安装;记住必须重启才可生效。

python修改注册表的更多相关文章

  1. Python之注册表增删改查(干货)

    在Windows平台下,对注册表的增删改查的需求比较多,微软提供了很多用于访问,修改注册表等的API,我们可以使用诸如bat,或者C++等各种方式去访问修改注册表.无所不能的python下如何完成这些 ...

  2. 修改注册表 去除Windows快捷方式图标小箭头

    一些朋友不喜欢Windows系统中快捷方式图标上面的小箭头,下面介绍如何修改注册表去除快捷方式图标上的小箭头. 1.开始->运行->输入regedit,启动注册表编辑器,然后; 2.依次展 ...

  3. C#综合揭秘——通过修改注册表建立Windows自定义协议

    引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...

  4. windows文件关联、打开方式列表之修改注册表攻略

    这里全是修改注册表的方式.网上找了半天,有的仅有添加文件关联的方法,却没有添加到打开方式列表里面的方法:有的有添加到文件列表的方法,却是使 用控制面板->文件夹选项的.好难得才找齐所有,从添加文 ...

  5. 通过cmd修改注册表并设置cmd窗口的大小

    设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con: 启动时设置窗口大小: cmd /k "mode con: cols=120 lines=40 ...

  6. 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议

    引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...

  7. 通过修改注册表来破解sqlyog

    Sqlyog作为一款可视化的数据库管理工具,各种方便我就不说了,但是未经汉化或者绿色过的软件存在30天的生命期,到期后我们就不可以使用了,要摸卸载重装,我们还可以去修改注册表,来延长它的生命期,具体步 ...

  8. C# .NET修改注册表

    c#修改注册表,需要引用Microsoft.Win32命名空间 using Microsoft.Win32; //声明 ///引用 RegistryKey reg; reg = Registry.Cl ...

  9. 通过修改注册表设置windows环境变量

    开发环境搭建每次都要设置很多环境变量, 一般是通过  [菜单]->[计算机]->[属性]->[高级设置]->[环境变量]进行设置,重装系统后,每次都要设置很多环境变量,很麻烦. ...

随机推荐

  1. WCF(二)三种通信模式

    WCF在通信过程中有三种模式:请求与答复.单向.双工通信 请求与答复模式 客户端发送请求,然后一直等待服务端的响应答复(异步调用除外),期间处于假死状态,直到服务端有了答复后才能继续执行其他程序 请求 ...

  2. Windbg DUMP

    Windbg DUMP分析(原创汇总) 1. 引入篇 1.1 下载安装 1.2 调试器 1.3 操作界面2. 命令篇 2.1 按照来源划分 2.1.1 基本命令 2.1.2 元命令 2.1.3 扩展命 ...

  3. JS学习一

    js中的变量输出   [使用JS的三种方式] 1. 在HTML标签中,直接内嵌JS(并不提倡使用): <button onclick="alert('你真点啊!')"> ...

  4. 201521123082 《Java程序设计》第7周学习总结

    201521123082 <Java程序设计>第7周学习总结 标签(空格分隔): Java 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ...

  5. 201521123061 《Java程序设计》第八周学习总结

    201521123061 <Java程序设计>第八周学习总结 1. 本周学习总结 2. 书面作业 1.List中指定元素的删除(题目4-1) 1.1 实验总结 主要是应用到了list中的a ...

  6. 201521123044 《Java程序设计》第9周学习总结

    1. 本章学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免 ...

  7. 201521123103 《java学习笔记》 第十三周学习总结

    一.本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 二.书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.e ...

  8. 201521123060 《Java程序设计》第13周学习总结

    1.本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2.书面作业 1.网络基础 1.1比较ping www.baidu.com与ping cec.jmu.edu ...

  9. 201521123015 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...

  10. maven profile切换正式环境和测试环境

    有时候,我们在开发和部署的时候,有很多配置文件数据是不一样的,比如连接mysql,连接redis,一些properties文件等等 每次部署或者开发都要改配置文件太麻烦了,这个时候,就需要用到mave ...