1 关于注册表
注册表是Windows系统中重要的数据配置存储结构,存储着系统绝大部分的核心配置信息。
实际上也是一种文件,这些文件大多数存储在系统盘system32\config目录下,
如笔者系统安装在C盘,那这个目录就是C:\Windows\System32\config。
Hive方式
在该文件夹下可以看到SOFTWARE、SYSTEM、SAM等文件,这些文件被以内存映射的方式映射到内核空间。
然后以一种被称为“HIVE”的方式组织起来,注册表API实际上操作的是这份HIVE内存数据,
对HIVE数据的改动,最终会被回写到config目录下对应的文件中。
读者如果只是想单纯使用注册表做数据读取或存储,可以没有必要深入去研究内核对注册表的实现方式。
”Microsoft Windows中的一个重要的数据库”
注册表是Windows操作系统中的一个核心数据库,用于存储系统和应用程序的设置信息。
直接控制着Windows的启动、硬件驱动程序的装载、一些Windows应用程序的运行,从而在整个系统中起着核心作用。
这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,
联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,
性能记录和其他底层的系统状态信息,以及其他数据等。
2 注册表的数据结构
注册表由项(也叫主键或称“键”)、子项(子键)和值构成。
一个项就是一个文件夹,而子项就是这个文件夹当中的子文件夹。子项也是一个项。
一个值则是一个项的当前定义,由名称、数据类型、分配的数据值组成。
一个项可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该项的默认值。
2.1 注册表的数据类型主要有以下四种:
REG_SZ: 字符串:文本字符串
REG_MULTI_SZ: 多字符串值:含有多个文本值的字符串
REG_BINARY: 二进制数:二进制值,以十六进制显示,
REG_DWORD: 双字值;一个32位的二进制值,显示为8位的十六进制值。
3 相关术语
- HKEY
- key(键)
它包含了附加的文件夹和一个或多个值。
- subkey(子键)
在某一个键(父键)下面出现的键(子键)
- branch(分支)
代表一个特定的子键及其所包含的一切。一个分支可以从每个注册表的顶端开始,但通常用以说明一个键和其所有内容。
- value entry(值项)
带有一个名称和一个值的有序值。每个键都可包含任何数量的值项。每个值项均由三部分组成:名称,数据类型,数据。
- 字符串(REG_SZ)
在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。通常它由字母和数字组成。
4 注册表有5个根键(HKEY)
-
HKEY_CLASSES_ROOT
启动应用程序所需的全部信息,如扩展名,应用程序与文档之间的关系,驱动程序名,DDE和OLE信息,类ID编号和应用程序与文档的图标等。
-
HKEY_CURRENT_USER
当前登录用户的配置信息,如环境变量,个人程序以及桌面设置等。
-
HKEY_LOCAL_MACHINE
本地计算机的系统信息,如硬件和操作系统信息,安全数据和计算机专用的各类软件设置信息。
-
HKEY_USERS
计算机的所有用户使用的配置数据,这些数据只有在用户登录系统时才能访问。
-
HKEY_CURRENT_CONFIG
当前硬件的配置信息,其中的信息是从HKEY_LOCAL_MACHINE中映射出来的。