C++ 黑客编程揭秘与防范(第3版)
上QQ阅读APP看书,第一时间看更新

3.2.1 注册表结构简介

注册表是Windows系统管理和维护的配置较为复杂的信息数据库,它以树状形式存储信息。不同版本的Windows系统,其结构基本相同。由于各种软件为了满足自身的不同需求,对注册表中的信息进行读写,导致注册表中存在大量的冗余数据,因此有人戏称注册表是一个数据杂乱的“垃圾场”。

查看Windows注册表的信息,可以使用Windows提供的注册表编辑器。打开注册表编辑器的方式很简单,选择“开始”→“运行”,在出现的“运行”窗口中输入“regedit”,即可打开Windows提供的“注册表编辑器”窗口,如图3-5所示。

图3-5 注册表编辑器界面

在图3-5中,可以通过注册表编辑器看出注册表的层次结构是一个树状结构。它由若干部分组成,分别是根键、子键和键值项。子键和键值项中存在的具体数据有三部分,分别是值名称、值类型和值。

根键:类似于磁盘驱动器的名称,在树状结构中类似于数的根节点。从图3-5中可以看出,根键的父节点是“我的电脑”,由此非常类似于磁盘驱动器。在Windows系统下,根键包括HKEY_CLASSES_ROOT 、 HKEY_CURRENT_USER 、 HKEY_LOCAL_MACHINE 、HKEY_USER和HKEY_CURRENT_CONFIG共5个。从Windows 9x一直到Windows 8甚至更高版本的操作系统中,根键都保持一致。

子键:子键类似于文件夹,一个根键下可以包含多个子键,子键下也可以包含多个子键。

键值项:不包括子键的子键就是键值项,相当于树状结构中的叶子节点。

无论是根键、子键还是键值项,都是注册表中的结构,具体的数据就存储于各结构的相应位置。注册表中的数据由3部分组成:值名称、值类型和值。在图3-5中的右半部分可以看到“名称”“类型”和“数据”3部分,其中第一行的“名称”为“AlReadyPin”“类型”为“REGDORD”“数据”为“0x00000001(1)”。

:在不同的书中,“根键”“子键”“键值项”“值名称”“值类型”和“值”有不同的名称,只要根据上下文具体加以理解即可。