注册表根键全剖析
HKEY_USER
独立的根键
HKEY_DYN_DAT
动态生成的信息
表 4-1 可以看出,在所谓的注册表六大根键中,除了 HKEY_LOCAL_MACHINE 和 HKEY_USER 根 键是独立的以外,其他都是从这两个根键动态映射派生出来的,这样,我们就基本可以把注册表化
繁为简地视为两大根键。
(1)HKEY_CLASSER_ROOT 根键 此根键保存了所有文件类型、文件扩展关联,OLE、DDE、类注册等重要信息,因此它也是 Windows 98 注册表中最重要的部分之一,对 Windows 98 整个系统来说也是至关重要的。 HKEY_CLASSER_ROOT 根 键 实 际 是 HKEY_LOCAL_MACHINE\Software\CLASSES 和 HKEY_CURRENT_USER\Software\Classes 子键信息集合的映射。虽然 HKEY_CLASSER_ROOT 根 键不是独立存在而是派生出来的,但它所保存的信息是注册表中最重要的部分之一。
注册表根键全剖析
注册表是一个庞大的数据库,是一个巨大的迷宫,只知道按照案例顺藤摸瓜地修改键值项是不 够的。那么如何寻找出入注册表的线索,解开笼罩注册表的迷雾呢?答案就是必须深入了解注册表 的逻辑组织结构。
一、 注册表结构概述
注册表是被保存在几个文件中,这些文件代表了注册表的物理结构,即能对这些文件进行拷贝、 备份、恢复操作。然而这些注册表文件并不是简单的能被人阅读的文本格式文件,而是以二进制格 式保存的。所以要使用像 Regedit 之类的注册表编辑器才能浏览注册表的真实内容,而注册表编辑 器展示出来的就是注册表的逻辑结构。
在注册表中,HKEY_USERS\担负了完成多用户管理的重任。HKEY_CURRENT_USER 根键是 HKEY_USERS\<UserID>子键的映射,这里的<UserID>为用户的登录名称(如下图的登录帐户乙)。 在 HKEY_USERS\.Default 子键中的信息用来为没有用户配置文件的用户登录时创建默认用户配置 文件。如果 HKEY_USERS 键只显示了.Default 子键,那么 HKEY_CURRENT_USER 指向在 HKEY_USER 中 的 键 。 如 果 除 .Default 子 键 外 还 带 有 其 他 的 用 户 名 存 在 , 那 么 HKEY_CURRENT_USER 根据用户登录时的 UserID 映射该子键。如果在 HKEY_LOCAL_MACHINE 以及 HKEY_CURRENT_USER 中存在相似的键,HKEY_CURRENT_USER 优先。例如,当前用户 的应用程序以及桌面设置要比默认的设置优先。
设置则保存在 HKEY_USERS 根键中,同时以物理文件的形式分别保存在配置文件夹的各自的 User.dat 文件中(比如 C:\Windows\Profiles\user_a,C:\Windows\Profiles\user_b 等文件夹,默认用户 的配置文件保存在 C:\Windows\User.dat)。
我们敢肯定,大部分读者在不了解注册表逻辑结构的情况下,所能做的至多是使用 Regedit 等 注册表编辑器漫无目的地在注册表里到处游荡,然而结果是没有任何有价值的收获,最后也只有感 叹——注册表太庞大了!
另外一个潜在的普遍性问题是,很多读者利用注册表所做的仅仅是在一些修改实例资料的指导 下,对注册表进行简单地修改。但作为注册表高手来说,仅仅利用注册表来达到这个目的是完全不 够的,更多的应该是自己找出那些不被人知的技巧;利用注册表解决各种系统疑难问题。
Config 子键:存放着有关显示字体、分辨率、颜色深度以及打印机等信息。 Driver 子键:是一个保留键,暂时没有用来保存任何信息。 Enum 子键:此键下存放着所有当前系统硬件设备(也有可能是类似虚拟驱动程序的设备)的 信息。 Hardware 子键:存放着当前系统使用的 CPU、FPU(浮点处理器)、MFA(多功能适配器)以 及其它硬件信息。 Network 子键:存放着有关登录的信息。 Security 子键:此键下存放着有关安全设置的信息。 Software 子键:此键下存放着当前系统所有的软件信息及用户信息。 System 子键:存放着系统的配置信息。 (4)HKEY_USERS 根键 HKEY_USERS 根键保存了用户个性设置信息。在这个根键中保存了存放在本地计算机口令列 表中的用户标识和密码列表。同时每个用户的预配置信息都存储在 HKEY_USERS 根键中。 HKEY_USERS 是远程计算机中访问的根键之一。 (5)HKEY_CURRENT_CONFIG 根键 HKEY_CURRENT_CONFIG 根键包含了从 HKEY_LOCAL_MACHINE\Config\000x 中动态映射 过来的当前的硬件配置信息。数字 x 表示配置的数目。例如,如果你的计算机有多套硬件配置方案, 则每种方案的子键是 0001 以及 0002 等。 如果你在 Windows 98 中设置了两套或者两套以上的硬件配置文件(Hardware Configuration file),则在系统启动时,将会让用户选择使用哪套配置文件。在 HKEY_CURRENT_CONFIG 根键 中存放的正是当前配置文件的所有信息。在这个根键中保存着定义当前用户桌面配置(如显示器等 等)的数据,该用户使用过的文档列表(MRU),应用程序配置和其他有关当前用户的 Windows 98 中文版的安装的信息。 (6)HKEY_DYN_DATA 根键 HKEY_DYN_DATA 根键中的信息是由系统在启动时生成的,它主要包括了那些 Windows 98 用来操作各种硬件的动态信息。HKEY_DYN_DATA 根键中的信息从不写入硬盘。每次 Windows 98 系统启动时,都会重新生成这些信息。因此,在每次启动时,HKEY_DYN_DATA 根键中的信息是 不同的。HKEY_DYN_DATA 包含了两个子键分支: Config Manager 子键 该子键包括了系统中所有已经安装设备的信息,这些是通过该子键下的 Enum(枚举)子键来 显示的。在 Enum 子键下面将有一些以“C2”为开头的子键,这些子键下面保存着当前计算机硬件 所需要的信息的指针,用以指向具体的配置信息单元。 如果系统启动时发现一个在 HKEY_CURRENT_CONFIG 根键中不存在的设备,它就会通知系 统安装这个设备,并且启动“添加新硬件”向导。如果它发现在 HIEY_CURRENT_CONFIG 根键中 的某个设备已经不存在了,它就会指出这个情况。 PerfStats 子键 该子键中保存了 Windows 98 系统各个设备的运行性能,如运行开始、进行中和运行结束等。 用户通过“系统监视器”工具软件可以非常容易地理解这些信息的含义。例如,在 StartSrv 子键下 面将保存 KDRNAL(核心)、VCACHE(磁盘高速缓存)、VFAT(文件系统)、VMM(内存管理程 序)和 Dial-Up Adapte(拨号适配器)等信息。灵活地使用这些信息,可以很方便地查看并调节系 统性能。
(2)HKEY_CURRENT_USER 根键 我们的房间里也许仅仅放了一台计算机,但使用它的人可能并不仅仅是某一个用户;计算机上
安装的硬件和软件是唯一存在且被所有用户使用,但每个用户对自己喜欢的设置(比如桌面与外观
设置等)却可以不是唯一的!
以上描述解释了多用户管理的概念,而 Windows 98 的特色之一就是支持多用户管理(即便 Windows 98 只有你一个人使用,但并不能否认它具备多用户管理的能力)。而 Windows 98 的多用户 管理机制可以概括地解释为:在任何用户登录时,都会使用唯一的硬件和软件设置,但那些喜好设
置,将只使用自己的那套方案。
在 Windows 98 注册表逻辑结构中,实际只有 HKEY_LOCAL_MACHINE 和 HKEY_USERS 两 个根键,而那些唯一的软件和硬件设置则保存在 HKEY_LOCAL_MACHINE 根键中,并保存在唯一 的物理文件 C:\Windows\System.dat 中,任何用户都将使用该根键中的设置;而每个用户自己的喜好
比如,初学者经常碰到的摸不着头脑一个问题是,为什么在 HKEY_LOCAL_MACHINE\Software\和 HKEY_CURRENT_USER\Software\里都有诸如 Microsoft 之 类的子键,而且看上去非常相似?是不是他们都是相同的?实际上,在了解了注册表逻辑结构的情 况下,就会明白 HKEY_LOCAL_MACHINE\Software\下存放的软件信息是被所有用户使用的,而 HKEY_CURRENT_USER\Software\下保存的仅仅被当前用户使用!两个子键下包含的子键名有可能 一样,但里面的键值项则完全不一样(具体还要看各个程序的设置)。
图 4-2-1-1 根键 HKEY_CURRENT_USER 根键下有八个子键为: AppEvents:记录已注册的各种应用事件。此子键包括与事件标志有关的信息,以及当某些事 件发生时 Windows 发出的声音信息。 Control Panel:与控制面板设置有关的内容。 Identities:管理 Outlook Express 的多用户配置文件(此子键只有在安装了 Outlook Express 后才 产生)。 InstallLocationsMRU:Windows 98 安装路径的有关信息。 Keyboard layout:键盘设置信息。通常当键盘用于特殊目的时需要进行改变。 RemoteAccess:此项是安装 IE 后建立的子键,此子键保存着允许用户连接到远程计算机和网络 的拨号服务程序向导的有关信息。 Software:包含所有已安装软件的有关信息 (3)HKEY_LOCAL_MACHINE HKEY_LOCAL_MACHINE 根键是 Windows 98 注册表的超级“大仓库”,它保存了所有非用户 个性设置之外的本地计算机硬件和软件配置数据。此根键包括下面的八个主要子键:
二、 注册表根键综述