使用Python操作注册表

来源:互联网 发布:中国根域名服务器 镜像 编辑:程序博客网 时间:2024/05/02 01:27

使用Python操作注册表

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

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为打开的项的句柄

2.关闭注册表

打开的注册表,在操作完成后,需要关闭。在Python中使用RegCloseKey函数关闭打开的注册表项。其函数原型如下所示。

RegCloseKey(key)

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

key:已经打开的注册表项。

以下实例关闭一个已经打开的注册表项。

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

>>> win32api.RegCloseKey(key)
>>> print key

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

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')

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')

【责任编辑:杜书 TEL:(010)68476606】

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃洋芋中毒了怎么办? 脸上出毒气疙瘩怎么办 吃了土豆呕吐怎么办 煤烟中毒后头疼怎么办 身上长毒气疙瘩怎么办 宝宝肚子寒疼怎么办 小孩腹胀腹痛不消化怎么办 颠茄片服用过量怎么办 狗吃番茄拉肚子怎么办 颠茄片中毒了怎么办 拉肚子半个月怎么办啊 肚子里有细菌怎么办 文珠兰叶子黄了怎么办 文殊兰叶子太长怎么办 桑叶牡丹有虫子怎么办? 米兰花叶子枯萎怎么办 一品红叶子不红怎么办 兰花叶有白点怎么办 旱莲花叶子黄怎么办 旱莲花叶子发黄怎么办 长寿冠叶子枯萎怎么办 长寿花枯萎了怎么办 竹节海棠植株发软怎么办 竹节海棠烂根怎么办 倒挂金钟晒伤了怎么办 长寿花已经徒长怎么办 夏天长寿花徒长怎么办 吊金钟叶子蔫了怎么办 四季海棠长虫子怎么办 小金鱼花不开花怎么办 杜鹃花浇肥大了怎么办 四季海棠烂叶子怎么办 竹节海棠叶子干枯怎么办 月月菊花花朵发黑怎么办 枯萎的四季海棠怎么办 夏天蟹爪兰叶子发软怎么办 夏天蟹爪兰掉叶子该怎么办 天竺葵木质化了怎么办 绿萝烂根且叶子发黄怎么办 海棠树叶子发黑怎么办 四季海棠花干叶怎么办