官方参考文档:https://support.microsoft.com/zh-cn/help/256986/windows-registry-information-for-advanced-users
何谓注册表
注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用。这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等。
注册表的数据结构
注册表由键(也叫主键或称“项”)、子键(子项)和值项构成。一个键就是分支中的一个文件夹,而子键就是这个文件夹当中的子文件夹,子键同样它也是一个键。一个值项则是一个键的当前定义,由名称、数据类型以及分配的值组成。一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。
在注册表编辑器(regedit.exe)中,数据结构显示如下,其中,command键是open键的子键,(默认)表示该值是默认值,值名称为空,其数据类型为REG_SZ,数据值为%systemroot%/system32/notepad.exe"%1数据类型。
注册表的数据类型主要有以下四种:显示类型(在编辑器中)数据类型说明
REG_SZ:字符串:文本字符串
REG_MULTI_SZ:多字符串值:含有多个文本值的字符串
REG_BINARY:二进制数:二进制值,以十六进制显示,
REG_DWORD:双字值;一个32位的二进制值,显示为8位的十六进制值。
winreg
winreg是python的一个标准库,其中包含了一些对Windows注册表的一些功能函数,可以对Windows注册表进行查询、修改、删除、新增等一些功能。
代码示例
从Windows注册表中,查询处理器相应的键值,获取处理器的基本信息:
#!/usr/bin/env python
#coding=utf-8
import _winreg
#获取该键的所有键值,遍历枚举
i=0
run = True
while run:
subkey = r"HARDWARE\DESCRIPTION\System\CentralProcessor\{}".format(i) #可能有多个core,按照索引获取键
try:
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, subkey)
except WindowsError:
run = False
try:
j = 0
while 1:
#EnumValue方法用来枚举键值,EnumKey用来枚举子键
name,value,typeNo = _winreg.EnumValue(key,j)
print repr(name),value,typeNo
# print _winreg.QueryValueEx(key)
j+=1
except WindowsError:
print 'Over'
i+=1
网友评论