深入注册表 注册表实质上是一个巨大的数据库，它存储着：软、硬件的有关配置和状态信息，保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据；联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联，硬件部件的描述、状态和属性；性能记录和其它底层的系统状态信息，以及各类其它数据。如果注册表遭到破坏，则系统功能就会不正常，甚至瘫痪。 一 注册表的结构 1.注册表文件组成 在Win 95中，注册表由两个文件组成：System.dat和User.dat，保存在Win 95所在的文件夹中。前者包含系统硬件和软件的设置，而后者保存着与用户有关的信息，例如颜色方案、资源管理器的设置以及网络口令等。它们是由二进制数据组成，因而无法用文本编辑器加以查看与修改。但在Win95的文件夹中提供了注册表编辑器（Regedit．exe），可以用它来查看和维护注册表。
2.注册表的结构
通过注册表编辑器(图1)，我们可以了解注册表的结构。

注：单击“开始”→“运行”，在对话框中键入“Regedit”，单击“确定”按钮即可打开注册表编辑器。
从图1我们可以看出注册表编辑器与资源管理器的界面相似，在菜单之下是两个窗口，而数据的组织也与资源管理器类似。左面窗口中，由“我的电脑”开始，以下是六个分支，每个分支名都以HKEY开头，称为主键（Key），和资源管理器中的文件夹相似，表示主键的图标与文件夹图标一样。每个主键图标的左边有一个加号（＋）图标，单击这个加号可将这一分支展开，展开后加号变为减号。主键下面还包含次级主键（Subkey）。当单击某一主键或次级主键时，主键名左边的文件夹图标变为打开状，右面窗口中的内容会发生相应的变化，右面窗口显示的是所选主键内包含的一个或多个键值（Value）。键值由键值名(Value Name)及键值数据(Value Data)两部分组成，由右窗口中的两个列标：名称(Name)和数据(Data)表示。
主键中可包括多级次级主键，注册表中的信息就是按多级的层次结构组织起来的。注册表中的每个分支中保存有该计算机中软硬件设置中某一方面的特定信息与数据。
在注册表编辑器窗口的底部是状态栏，当选定一个主键或次级主键时，状态栏中显示出所选主键所处的路径。
二 注册表中的关键字
注册表中各个分支的功能如下：

下面作详细介绍。
1.HKEY_CLASSES_ROOT关键字
该关键字由多个子关键字组成，具体可分为两种:一种是已经注册的各类文件的扩展名，另一种是各种文件类型的有关信息。在图1中单击HKEY-CLASSES-ROOT左边的加号，就可在左窗口中看到各种已经注册的文件扩展名。
注册表内登录的文件扩展名中，一部分是系统约定的扩展名，另一部分是由应用程序自定义的扩展名。应用程序只有把自定义的扩展名登录到注册表中，系统才能识别和关联使用有关的文档，即只有经过注册的扩展名，系统才能自动关联。
当选中某个扩展名关键字时，在右窗口中将显示出有关的键值。
在HKEY_CLASSES_ROOT主关键字下有一个子关键字“CLSID”，其中包含了所有注册文件的类标识。因此也可以通过类标识来查找相关文件的各种信息。
下面我们结合修改快捷方式图标来说明如何使用注册表修改显示信息。
(1)打开注册表编辑器，在HKEY_CLASSES_ROOT关键字下找到与快捷方式有关的子关键字“lnkfile”并选中它。
(2)键名“IsShortcut ”表示在桌面的快捷方式图标的左下角标注一个向上的小箭头。如果你不喜欢这个小箭头，可以采用下面的方法删除它:选中“IsShortcut”，然后打开“编辑”菜单，单击“删除”命令，将该项删除。关闭注册表并重启Win 95，你将发现快捷方式图标上已经没有小箭头了。
（3）键名“NeverShowExt”表示在快捷方式图标下不显示文件扩展名。如果你希望显示扩展名，可以采用下面的方法把该键名改为“AlwayShowExt”:单击“NeverShowExt”，打开“编辑”菜单，单击“重命名”命令，输入新名。关闭注册表并重启Win 95。你会发现快捷方式图标上已经加上扩展名了。
2.HKEY_CURRENT_USER关键字
单击HKEY_CURRENT_USER左边的加号，出现图2所示窗口，从图2中可以看到，HKEY_CURRENT_USER下面有7个子关键字，除“RemoteAccess”外，其余6个都为系统预定义。

AppEvents：登录已注册的各种应用事件
Control Panel：与控制面板设置有关的内容
InstallLocationsMRU：安装路径的有关信息
keyboard layout：键盘设置信息
Network：网络设置信息
RemoteAccess：此项是安装IE4.0建立的子关键字，包含该应用程序的有关信息
Software：软件的有关信息
(1)AppEvents子关键字
AppEvents子关键字包含了各种应用事件的列表。其下面又包含两个子关键字EventLabels（按字母顺序列表）和Schemes（按事件分类列表）。
从图3可以看出，Schemes是按照应用（Apps）和命名（Name）对事件进行分类的。在本系统中，Apps共分为Default（缺省）、Explorer（资源管理器）、Mplayer（媒体播放器）等；Name一般情况下均采用Windows缺省值。在“控制面板”中打开“声音”对话框，你可以看到这些事件的中文列表，其内容与按照应用（Apps）来对事件分类的列表是一一对应的。

(2)Control Panel子关键字
该子关键字所包含的内容与桌面、光标、键盘和鼠标等设置有关。改变它们的键值就将改变对应的工作环境或参数。图4为Control Panel的结构。
在图4中可以看到，Control Panel下面又有8个子关键字。根据系统配置和设置情况的不同，子关键字的数目也会不同。例如有的系统中没有“Mouse”关键字，并不是表示计算机中没有安装鼠标，而是指你从来没有对鼠标作过任何设置，系统完全采用默认值。

虽然Control Panel中的键值与环境和特性有直接关系，但很多参数的改变并不要求用户通过修改注册表来实现，而只需通过“控制面板”即可进行修改。也有一些环境特性的改变只能通过修改注册表来实现，例如，改变菜单的弹出延迟时间。
★Appearance
这个子关键字的键值中列出了可供选择的各种颜色和图案。可以在“控制面板”的“显示/外观”对话框的“方案”下拉菜单中，看到这些颜色和图案的中文名称。
★Cursors
这个子关键字的键值中列出了光标图案所在的文件路径。可以在“控制面板”的“鼠标/指针”对话框的“方案”下拉菜单中，看到这些颜色和图案的中文名称并进行设置。
★Desktop
这个子关键字的键值中列出了桌面和窗口中的各种部件，如:窗口边界、标题、图标、菜单、滚动条、消息框的长度、宽度和字体等数据。这些数据可以在“控制面板”的“显示/外观”对话框的“项目”下拉菜单中进行修改。
★Input Method
这个子关键字的键值中登录了“输入方法”转换热键的有关数据。这些数据你可以在“控制面板”中打开“输入法”对话框中的“热键”标签进行修改。
★International
这个子关键字的键值中登录了表示“上午”和“下午”的数据。这些数据可以在“控制面板”中打开“区域设置”对话框中的“时间”标签进行修改。
★Keyboard
这个子关键字的键值中登录了击键时的重复延时和重复速率。这些数据可以在“控制面板”中打开“键盘”对话框中的“速度”标签进行修改。
上面仅以AppEvents和Control Panel两个子关键字为例作了比较详细的讨论，对其他子关键字，读者可以按照前面所列出的子关键字的基本内容自己进行分析。
3.HKEY_LOCAL_MACHINE关键字
图5中，HKEY_LOCAL_MACHINE下面的子关键字有8个。其中“.mp2”是安装播放软件“Xing MPEG”后定义的关键字，其余的是系统预定义的关键字。下面我们先对预定义关键字作简单介绍。
Config：包含显示字体、分辨率、显示点距、颜色深度以及打印机型号等信息。
Enum：包含系统当前配置的所有硬件设备的信息。
Hardware：包含系统使用的浮点处理器、串口等有关信息。

Network ：网络的有关信息。
Security ：安全设置的信息。
Software ：系统软件、当前安装的应用软件及用户的有关信息。
System ：包含系统的全部软件和硬件信息。
说明:
(1)根据计算机中硬件配置和安装文件的不同，在HKEY_
LOCAL_MACHINE中的信息将有很大的差别（在其他的关键字中也有这种差别）。
(2)HKEY_LOCAL_MACHINE下面各个子关键字中包含的信息有很多是重复的，这只是为了浏览和编辑的方便。当然在注册表数据库中是不会重复的。
4.其它主关键字
其余的主关键字中，HKEY_USER和HKEY_CURRENT_USER类似，HKEY_CURRENT_CONFIG和HKEY_LOCAL_MACHINE类似，HKEY_DYN_DATA的内容比较简单，只包含了系统运行中的动态数据，即系统硬件的当前状态和那些需要更新和检索的数据。
（张光春）