winreg查询Windows注册表的一些基本用法
注册表是Windows操作系统中用于存储配置信息的数据库。它包含了关于系统硬件、已安装的应用程序、用户账户设置以及系统设置的信息。
特别地,当我们需要某些软件的配置配息时,主要在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下的SoftWare内进行查询操作。
注册表根健
win+r,输入regedit回车打开注册表编辑器后,可以发现,注册表内总共有5个文件夹,也被称作5个根健。
这五个根健的主要作用以及特点如下表所示
根键名称 | 缩写 | 主要作用 | 特点 |
---|---|---|---|
HKEY_CLASSES_ROOT | HKCR | 存储文件类型关联、COM组件、快捷方式等信息。 | 是 HKLM\Software\Classes 和 HKCU\Software\Classes 的合并视图。 |
HKEY_CURRENT_USER | HKCU | 存储当前登录用户的个性化设置,如桌面、软件配置等。 | 仅影响当前用户,不同用户的 HKCU 内容不同。 |
HKEY_LOCAL_MACHINE | HKLM | 存储计算机硬件、系统级软件配置(如驱动、服务、全局设置)。 | 影响所有用户,修改需管理员权限。 |
HKEY_USERS | HKU | 存储所有用户配置的原始数据,包括 .DEFAULT (未登录时的默认设置)和其他用户 SID。 | 包含 HKCU 的数据来源,但直接修改可能影响系统稳定性。 |
HKEY_CURRENT_CONFIG | HKCC | 存储当前硬件配置文件(如显示器、打印机设置),通常指向 HKLM\SYSTEM\CurrentControlSet\Hardware Profiles 。 | 是动态生成的,重启后可能变化,通常用于临时硬件配置。 |
winreg
winreg是python的内置库,可以用来查询修改windows注册表。这里我们给出其内部所有函数的具体使用方法,并以查找和修改微信语言设置为例来进行说明。
首先,在代码编辑器中导入winreg,ctrl加鼠标单击winreg,即可跳转到winreg源代码中(vscode或pycharm支持)
跳转到winreg.pyi文件内后,其内部的所有函数如下:
可以看到winreg只支持windows操作系统,只在sys.platform为win32时才可以导入所有的函数与变量进行使用。
OpenKey
OpenKey函数是用来打开某个注册表项,也就是某个文件夹。
具体的使用方法与我们平常使用的文件读写函数open一致,可以使用with语句(上下文管理器)来进行操作,当然也可以直接使用。但是需要注意的是,不使用with语句时一定要记得在代码的其他地方关闭该注册表项即再使用一次CloseKey函数。否则会产生资源泄露。
代码:
'''
winreg.OpenKey函数参数详解:
key:主键,winreg内置变量,比如winreg.HKEY_CURRENT_USER,winreg.HKEY_CLASSES_ROOT等\n
sub_key:子键,当前主键下的某个文件夹,需要注意的是传入时要按照文件路径的格式传入,比如,"Software\Tencent\WeChat"\n
reserved:保留参数,默认为0,微软保留该参数以备未来扩展,当前所有版本的Windows均要求此值为0。\n
access:指定对注册表键的访问权限,控制后续操作(如读取、写入、删除等)。与open语句中的mode类似\n
'''
import winreg
sub_key=r"Software\Tencent\WeChat"
key=winreg.OpenKey(key=winreg.HKEY_CURRENT_USER,sub_key=sub_key,access=winreg.KEY_READ)
winreg.CloseKey(key)
参数详解: