python操作注册表的方法实现

 更新时间:2023年08月29日 11:19:01   作者: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操作注册表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用pandas对矢量化数据进行替换处理的方法

    使用pandas对矢量化数据进行替换处理的方法

    下面小编就为大家分享一篇使用pandas对矢量化数据进行替换处理的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python ARP扫描与欺骗实现全程详解

    Python ARP扫描与欺骗实现全程详解

    这篇文章主要介绍了Python 实现ARP扫描与欺骗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • Python设计模式之代理模式实例详解

    Python设计模式之代理模式实例详解

    这篇文章主要介绍了Python设计模式之代理模式,结合实例形式较为详细的分析了代理模式的概念、原理及Python定义、使用代理模式相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Python通过format函数格式化显示值

    Python通过format函数格式化显示值

    这篇文章主要介绍了Python通过format函数格式化显示值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • python中spy++的使用超详细教程

    python中spy++的使用超详细教程

    这篇文章主要介绍了python中spy++的使用超详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • django轻松使用富文本编辑器CKEditor的方法

    django轻松使用富文本编辑器CKEditor的方法

    最近由于需要在django admin中使用到富文本编辑器,由于我比较喜欢CKEditor富文本编辑器,于是就有了这篇文章,下面这篇文章主要给大家介绍了在django中轻松使用富文本编辑器CKEditor的方法,需要的朋友可以参考下。
    2017-03-03
  • 一文详解PyQt5中实现不规则窗口的显示

    一文详解PyQt5中实现不规则窗口的显示

    这篇文章主要为大家详细介绍了Python PyQt5中实现不规则窗口的显示的相关资料,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-12-12
  • python将字典内容存入mysql实例代码

    python将字典内容存入mysql实例代码

    这篇文章主要介绍了python将字典内容存入mysql实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 一文带你掌握Python中的双下划线写法

    一文带你掌握Python中的双下划线写法

    在 Python 中,双下划线--也被称为“dunder”--是一种用于修饰类属性名称或类方法名称的行为,下面小编就来和大家详细讲讲如何在Python中使用双下划线吧
    2023-10-10
  • Pygame与OpenCV联合播放视频并保证音画同步

    Pygame与OpenCV联合播放视频并保证音画同步

    Pygame的Movie模块已经废弃多年,本文主要介绍了Pygame与OpenCV联合播放视频并保证音画同步,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12

最新评论