注册表的基本结构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

注册表的结构

在中文Windows 系统中,注册表采用“关键字”及其“键值”来描述登录项及其数据。所有的关键字都是以“HKEY”作为前缀开头。实际上,“关键字”是一个句柄。这种约定使得系统及应用程序开发人员可以在使用注册表API函数时把它用于应用程序的开发之中。为此,中文Windows 提供了若干个Win32 API 函数,以便在开发中文Windows 应用程序时添加、修改、查询和删除注册表的登录项。

在注册表中,关键字可以分为两类:一类是由系统定义的,通常称为“预定义关键字”;另一类是由应用程序定义的,安装的应用软件不同,其登录项也就不同。

1. HKEY_CLASSES_ROOT

该主关键字(或称为“根键”)包含了有关的OLE信息,以便在系统工作过程中实现对各种文件和文档信息的访问,如图1-4所示。其具体的内容有已经注册的文件扩展名、文件类型、文件图标等。

2.HKEY_USERS

PC用户都可以在这里设置自己的关键字和子关键字,根据当前登录的用户不同,这个关键字又可以指向不同的分支部分。这个分支部分将映射到HKEY_CURRENT_USER主关键字中,用户根据个人爱好设置的诸如桌面、背景、开始菜单程序项、应用程序快捷键、显示字体、屏幕节电设置等信息均可以在这个关键字中找到。该主关键字中的大部分设置都可以通过“控制面板”来修改,如果用户登录到系统中的信息没有预定义的登录项,则采用该关键字下面的“.Default”子关键字。

3.HKEY_CURRENT_USER

HKEY_CURRENT_USER主关键字是一个指向HKEY_USERS结构中某个分支的指针,它包含当前用户的登录信息,实际上它就是HKEY_USERS\.Default下面的一部分内容。如果在HKEY_USERS\.Default下面没有用户登录的其他内容,那么这两个主关键字包含的内容是完全相同的。

4.HKEY_LOCAL_MACHINE

该主关键字包含了本地计算机(相对网络环境而言)的硬件和软件的全部信息,如图1-9所示。当系统的配置和设置发生变化时,本关键字下面的登录项也将随之改变。

5.HKEY_CURRENT_CONFIG

这个主关键字实际上也是指向HKEY_LOCAL _MACHINE\Config结构中的某个分支

的指针,如图1-10所示。

HKEY_CURRENT_CONFIG下面的子关键字及内容与HKEY_LOCAL _MACHINE\Config\0001分支下面的子关键字及内容是完全相同的。

该主关键字包含的主要内容是计算机的当前配置情况,如显示器、打印机等可选外部设备及其设置信息等,而且这个配置信息均将根据当前连接的网络类型、硬件配置以及应用软件的安装不同而有所变化。

6. HKEY_DYN_DATA

顾名思义,该主关键字包含了系统运行中的动态数据,即已发生的事件的有关信息,如图1-11所示。因此,这个主关键字的内容不仅包含系统硬件的当前状态,也包含了那些需要更新和检索的数据。这些数据都是动态变化的,它们总是最新的信息。中文Windows 98每次启动时都将重新建立这个主关键字。

为了提高工作速度,HKEY_DYN_DA TA实际上是存放在内存(RAM)中的,因此,如果发生了对于注册表内容的修改,则不必立即写入磁盘,这对于提高系统的速度是十分必要的。

在注册表中经常出现双重入口(分支),例如,有一些在HKEY_CLASSES_ROOT中的键同样会在HKEY_LOCAL_MACHINE中出现,

如果这些相同的分支出现在两个不同的根键中,那么哪个根键有效呢?注册表的子键都有严格的组织。如果相同的信息出现在超过一个的子键中,假如你只修改了一个子键,那么该修改是否作用于系统依赖于该子键的等级呢?一般来说,系统信息优先于用户等级。例如,一个设置项同时出现在HKEY_LOCAL_MACHINE和HKEY_USER子键中,通常由

HKEY_LOCAL_MACHINE中的数据起作用。要注意的是,这种情况只发生在你直接编辑注册表时。如果你从“控制面板”中更改系统配置,则所有出现该设置项的地方均会发生相应的改变。

例如,你可以通过注册表设置文件关联,即将一个带有特殊后缀的文件连接到一个应用程序上。在注册表中,有4个子键都保存了文件管理的数据,它们分别是HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,

HKEY_LOCAL_MACHINE和HKEY_USER。在缺省情况下,所有后缀为1ST 的文件都被连接到记事本程序(Notepad)上。如果你在Windows资源管理器双击该后缀的文件,系统将激活记事本,同时将此文件调入编辑。但是你也可将此文件关联从Notepad改为Lotus Ami Pro(这也是一个字处理程序),则你在双击后缀为1ST的文件时将激活Lotus Ami Pro程序,同时编辑此文件。但是,如果你在直接编辑注册表时只修改一个子键,则会出现如下4种情况:

(1) 如果只修改HKEY_CLASSES_ROOT中的1ST项,则在双击1ST后缀的文件时将激活Lotus Ami Pro。

(2) 如果只修改HKEY_CURRENT_USER中的1ST项,则在双击1ST后缀的文件时将激活Notepad。

(3) 如果只修改HKEY_LOCAL_MACHINE中的1ST项,则在双击1ST后缀的文件时将激活Lotus Ami Pro。

(4) 如果只修改HKEY_USER中的1ST项,则在双击1ST后缀的文件时将激活Notepad。

在上面的例子中,HKEY_CLASSES_ROOT子键和HKEY_LOCAL_MACHINE子键看起来在控制文件关联上相互独立,这似乎有些自相矛盾,但是,要知道HKEY_ CLASSES_ROOT 根键就是HKEY_LOCAL_MACHINE\Software\Classes,因此,改变HKEY_CLASSES_ROOT

相关文档
最新文档