python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python操作注册表

python操作注册表的方法实现

作者:SteveRocket

Python提供了winreg模块,可以用于操作Windows注册表,本文就来介绍一下python操作注册表的方法实现,主要包括打开注册表、读取注册表值、写入注册表值和关闭注册表,具有一定的参考价值,感兴趣的可以了解一下

 在Windows操作系统中,注册表是一个重要的系统组件,它存储了系统和应用程序的配置信息。Python提供了winreg模块,可以用于操作Windows注册表。本文将介绍如何使用Python操作注册表,并介绍一些应用场景

1. 导入winreg模块

在使用winreg模块之前,我们需要先导入该模块。可以使用以下代码导入winreg模块:

import winreg

2. 打开注册表

可以使用winreg模块的OpenKey()方法打开注册表。该方法的参数是一个表示注册表项的句柄和一个表示要打开的子项的名称的字符串。如果要打开的子项不存在,将会抛出一个WindowsError异常。下面是打开注册表的示例代码:

import winreg
# 打开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer键
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer')

在上面的代码中,我们首先使用winreg.HKEY_CURRENT_USER常量表示HKEY_CURRENT_USER根键。然后使用winreg.OpenKey()方法打开注册表项Software\Microsoft\Windows\CurrentVersion\Explorer,并将结果保存在变量key中。

3. 读取注册表值

可以使用winreg模块的QueryValue()方法读取注册表值。该方法的参数是一个表示注册表项的句柄和一个表示要读取的值的名称的字符串。如果要读取的值不存在,将会抛出一个WindowsError异常。

下面是读取注册表值的示例代码:

import winreg
# 打开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer键
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer')
# 读取StartPage键的值
value = winreg.QueryValue(key, 'StartPage')
print(value)

在上面的代码中,我们首先使用winreg.OpenKey()方法打开注册表项Software\Microsoft\Windows\CurrentVersion\Explorer,并将结果保存在变量key中。然后使用winreg.QueryValue()方法读取StartPage键的值,并将结果保存在变量value中。最后打印value的值。

4. 写入注册表值

可以使用winreg模块的SetValue()方法写入注册表值。该方法的参数是一个表示注册表项的句柄、一个表示要写入的值的名称的字符串和一个表示要写入的值的类型的常量。如果要写入的值已存在,将会覆盖原有的值。

下面是写入注册表值的示例代码:

import winreg
# 打开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer键
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer', 0, winreg.KEY_WRITE)
# 写入TestValue键的值
winreg.SetValue(key, 'TestValue', winreg.REG_SZ, 'Hello, World!')

在上面的代码中,我们首先使用winreg.OpenKey()方法打开注册表项Software\Microsoft\Windows\CurrentVersion\Explorer,并将结果保存在变量key中。然后使用winreg.SetValue()方法写入TestValue键的值。需要注意的是,我们需要将要写入的值的类型作为winreg.SetValue()方法的第三个参数传入,并使用常量表示类型。

5. 关闭注册表

在操作注册表之后,我们需要关闭注册表。可以使用winreg模块的CloseKey()方法关闭注册表。该方法的参数是一个表示注册表项的句柄。

下面是关闭注册表的示例代码:

import winreg
# 打开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer键
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer')
# 关闭注册表
winreg.CloseKey(key)

在上面的代码中,我们首先使用winreg.OpenKey()方法打开注册表项Software\Microsoft\Windows\CurrentVersion\Explorer,并将结果保存在变量key中。然后使用winreg.CloseKey()方法关闭注册表。

6. 应用场景

Python操作注册表的应用场景很多,例如:

- 修改Windows系统设置,如修改桌面背景、修改默认浏览器等;
- 配置应用程序,如修改应用程序的默认设置;
- 读取系统信息,如读取系统启动时间、读取系统版本号等。

import _winreg
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
#获取该键的所有键值,因为没有方法可以获取键值的个数,所以只能用这种方法进行遍历
try:
    i=0
    while True:
        #EnumValue方法用来枚举键值,EnumKey用来枚举子键
        content = _winreg.EnumValue(key,i)
        i += 1
        print content
except WindowsError:
    pass
# 如果知道键的名称,也可以直接取值
value = _winreg.QueryValueEx(key,"ABC")
print value
#创建新的键
newkey = _winreg.CreateKey(key,"hello")
#给新创建的键添加页键值
_winreg.SetValueEx(newkey,"HelloNewKey",0,_winreg.REG_SZ,'this is new key content')

#将此脚本添加到注册表启动项
p = "C:\Users\Administrator\Desktop\main.py"
#在启动项中添加程序启动键值对 以及  页值
path = 'python "%s"' % p
print path
env = _winreg.OpenKeyEx(_winreg.HKEY_LOCAL_MACHINE,
                        "SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
                        0,
                        _winreg.KEY_SET_VALUE|_winreg.KEY_READ
                        )
print env
key = _winreg.EnumKey(env,0)#读取Run下面的第一个键
print key
value = _winreg.EnumValue(env,0)#枚举Run键  下面的第一个页值
print value
value = _winreg.EnumValue(env,1)#枚举Run键  下面的第二个页值
print value
value = _winreg.EnumValue(env,2)#枚举Run键  下面的第三个页值
print value
# value = _winreg.EnumValue(env,3)#枚举Run键  下面的第四个页值   不存在则报错
# print value
#遍历全部的页值如下
name_list = []
try:
    i = 0
    while True:
        name,value,type = _winreg.EnumValue(env,i)#枚举键下的页值
        name_list.append(name)
        i += 1
        print name
except WindowsError:
    pass
print name_list
if "Agent" not in name_list:
    _winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path)
else:
    value = _winreg.QueryValueEx(env,"Agent")
#判断是不是存在此键以及键的内容是否符合正常的
if "Agent" not in name_list:
    _winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path)
#获取子键的内容
value = _winreg.QueryValueEx(env,"Agent")
if value != path:
    _winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path) #如果存在此key  则会直接修改里面的value

总结

在Windows操作系统中,注册表是一个重要的系统组件,它存储了系统和应用程序的配置信息。Python提供了winreg模块,可以用于操作Windows注册表。可以使用winreg模块的OpenKey()方法打开注册表、使用QueryValue()方法读取注册表值、使用SetValue()方法写入注册表值和使用CloseKey()方法关闭注册表。Python操作注册表的应用场景很多,例如修改Windows系统设置、配置应用程序和读取系统信息等。

到此这篇关于python操作注册表的方法实现的文章就介绍到这了,更多相关python操作注册表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文