与注册表操作相关的函数可以分为打开注册表、关闭注册表、读取项值、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. [2017-2018上Java助教]个人信息收集

    在本学期的Java课程中,我们要收集的信息如下 1.学号 .码云地址 3.博客园地址 请各位同学自行创建,并按照如下的格式评论在这篇博客下方 学号+https://git.oschina.net/as ...

  2. 使用Sidecar将Node.js引入Spring Cloud

    网上看到的一篇文章,觉得写得挺好,现转载于此,以方便需要的网友查阅. 该文章介绍了非JAVA语言提供的应用集成到Spring Cloud的这样一个实现,以便我们使用其他语言作为参考. 感谢原作者分享, ...

  3. java 读写锁详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt124 在java多线程中,为了提高效率有些共享资源允许同时进行多个读的操作, ...

  4. 第2阶段——编写uboot之硬件初始化和制作链接脚本lds(1)

    目标: 1.关看门狗 2.设置时钟 3.初始化SDRAM (初始化寄存器以及清除bss段) 4.重定位 (将nand/nor中代码COPY到链接地址上,需要初始化nandflash,读flash) 5 ...

  5. SNS团队Beta阶段第六次站立会议(2017.5.27)

    1.立会照片 2.每个人的工作 成员 今天已完成的工作 明天计划完成的工作 罗于婕 发音图标的改进 对界面各部分的图标进行完善.美化 龚晓婷 对于历史记录功能的测试 对于历史记录功能进一步完善 林仕庄 ...

  6. 团队作业8----第二次项目冲刺(Beta阶段) 第五天

    BETA阶段冲刺第五天 1.小会议ing 2.每个人的工作 (1)昨天已完成的工作 文件读取的方式采用按钮的: (2) 今天计划完成的工作 (3) 工作中遇到的困难: 林莹:源代码的部分我们已经初步完 ...

  7. JAVA基础第五组(5道题)

    21.[程序21] 题目:求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘. 思路:用递归的思想. package com.niit.homework1; import ...

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

    1. 本章学习总结 2. 书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 while(list.contains(str)) list.remove(str); Q2.统计文 ...

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

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

  10. 201521123079《java程序设计》第14周学习总结

    PTA反馈问卷 雨课堂反馈问卷 本次作业参考文件 数据库PPT MySql操作视频与数据库相关jar文件请参考QQ群文件. 本周课程设计发布 Java课程设计 本周学习总结 1.1 以你喜欢的方式(思 ...