1.1 什么是注册表 注册表并不神秘,简单地说,它是用来对Windows操作系统进行配置的一个工具。通过它,可以对操作系统及应用软件进行优化,并可自己设置Windows的使用权根及解决硬件及网络设置不当带来的故障,甚至可以改造自己的操作系统。在Windows 3.x操作系统中,注册表是一个名为Reg.dat的文件,里面存储了一些文件关联的信息。操作系统大部分的设置都存放在系统配置文件(INI文件)中,由于这些INI文件不便于管理和维护,经常出现一些因INI文件遭到破坏而导致系统无法启动的问题,而且在Windows 95以上版本的操作系统中,需要保存的信息的数量和类型已经远远超过了INI文件的能力。为了使系统运行的更加稳定和健壮,同时也为了满足不断提高的信息保存要求,Microsoft将注册表技术引入了操作系统中,同时将INI文件中的大部分设置也移植到注册表中。目前,注册表在操作系统的启动和运行过程中起着十分重要的作用。 注册表(Registry)是关于系统设置的层次式数据库,它记录了用户账号、服务器硬件以及应用程序的设置信息等。和INI文件相比,注册表可以控制的数据要多得多,而且不仅仅限于处理字符串类型的数据。注册表也包含了一些系统配置的信息,这些信息根据操作系统的不同而不同。 注册表为系统和应用程序提供了保存其配置参数的最佳场所,对于注册表的访问和操作是十分必要的。注册表是Windows操作系统的核心部分,因此,在访问和操作注册表时应十分小心,以免破坏操作系统。 1.2 注册表的结构 在Windows操作系统中提供了注册表编辑程序。在安装了Windows后,注册表编辑程序被复制到Windows操作系统所在目录。注册表编辑程序名称为regedit.exe(其中,Windows NT中的注册表编辑程序名称为regedt32.exe)。运行注册表编辑程序的步骤如下: (1)单击Windows系统“开始”按钮,在弹出的菜单中选择“运行”命令,打开“运行”对话框。 (2)在“打开”下拉列表框中输入regedit.exe(或者regedit)。 (3)单击“确定”按钮,即可打开注册表编辑器。 另一种方法是在Windows操作系统的安装目录下找到regedit.exe文件,双击即可运行注册表编辑程序。 1.注册表中各主键的作用注册表中的所有信息都是分类保存的,“主键”是各个大的信息分类名称。注册表中的所有信息均被分类存放在相应主键中。操作系统不同相应的主键也不相同,其中,Windows 9x 、Windows NT、Windows me操作系统中有6个主键,而Windows 2000、Windows 2003操作系统中则有5个主键。 主键将注册表中的数据分为6大类,每一类都保存了不同的信息。 (1)HKEY_CLASSES_ROOT主键 该主键用于保存在系统中注册的各类文件的控制名以及文件关联等信息,例如文件扩展名、图标、文件启动模式、对象类型名称、对象类型ID等。这个主键下的文件扩展名有两类,一类是系统事先约定的扩展名,另一类是应用程序或用户自定义的文件扩展名。例如将扩展名为.ace说明为由WinRAR处理的文件,则在HKEY_CLASSES_ROOT的.ace子键的数据项中将数值设为“WinRAR”。事实上,该主键是一个冗余项,因为该主键下的所有信息都可以在HEKY_LOCAL_MACHINE主键中的\Software\Class子键中找到。 (2)HKEY_CURRENT_USER主键 该主键用于保存登录到系统的当前用户的计算机的环境变量、桌面设置、应用程序设置、个人程序组、打印机和网络连接等信息。该主键比HKEY_USERS主键更具体,HKEY_USERS主键包含所有登录用户的用户环境文件。 (3)HEKY_LOCAL_MACHINE主键 这是注册表中一个极为重要的主键,在这个主键中保存了计算机的硬件、软件及操作系统的配置信息,例如硬件组态、外部设备、网络设备、软件的安装及设置等。在该主键中可以找到与系统有关的有价值的信息,在使用注册表时,大部分操作都是针对该主键的。 (4)HKEY_USERS主键 该主键用于保存计算机所有用户的配置信息。HKEY_USERS主键包含了计算机中的所有用户,而HKEY_CURRENT_USER主键只包含当前登录到计算机的用户的信息。由此,HKEY_CURRENT_USER主键是HKEY_USERS主键的一部分。 (5)HKEY_CURRENT_CONFIG主键 该主键用于存放计算机当前的硬件配置信息,此根键实际上是HEKY_LOCAL_MACHINE中的一部分,它的子键与HKDY_LOCAL_MACHINE\Config\0001分支下的数据完全一样。 (6)HKEY_PERFORMANCE_DATA 在windows NT/2000/XP注册表中虽然没有HKEY_DYN_DATA键,但是它却隐藏了一个名为“HKEY_PERFORMANCE_DATA”的键。所有系统中的动态信息都存放在此子键中。系统自带的注册表编辑器无法看到此键,但可以用专门的程序来查看此键,例如使用性能监视器。 2.主键、子键及键值单击主键左端的“+”号,即可将该主键展开,展开后即可看到该主键下的所有子键,每一个项展开后还可以列出下一级的项,这些项称为“子键”(也称为子项)。每一个主键及相应的子键都可以称为键(也可称为项)。主键、子键以及键的关系。 从图37.3中可以看出注册表编辑器窗口分为左右两个部分,如果在左边窗格中选择一个键或者子键,则在右边窗格中将显示这个键或子键的值。一个值由“名称”、“类型”和“数据”三部分组成。 注意:子键名不是注册表独有的,而且同一子键名可能出现在几个不同的地方。 3.主键所对应的常数Windows操作系统注册表中的主键名称和对应常数如表所示。 表 注册表的主键名称和对应常数 主键名称 | 常数 | HKEY_CLASSES_ROOT | H80000000 | HKEY_CURRENT_USER | H80000001 | HKEY_LOCAL_MACHINE | H80000002 | HKEY_USERS | H80000003 | HKEY_CURRENT_CONFIG | H80000005 |
说明:在Windows 98操作系统注册表中的名为HKEY_DTN_DATA的主键中包含了系统的动态信息,该主键常数为H80000006。 4.数据类型所对应的常数注册表中常用的数据类型和对应常数如表所示。 表 数据类型常数 类型名称 | 数据类型 | 对应常数 | REG_BINARY | 二进制数据 | 3 | REG_DWORD | 4字节数据 | 4 | DWORD_BIG_ENDIAN | 逆序存放的4字节数据 | 5 | REG_DWORK_LITTLE_ENDIAN | 4字节数值数据 | 4 | REG_EXPAND_SZ | 带变量的文本字符串 | 2 | REG_LINK | 文件路径 | 6 | REG_MULTI_SZ | 以Null分隔的字符串 | 7 | REG_NONE | 无需分类的数据 | 0 | REG_RESOURCE_LIST | 设备使用资源列表 | 8 | REG_RESOURCE_REQUIREMENTS_LIST | 驱动程序要求的资源列表 | 10 | REG_SZ | 文本字符串 | 1 |
|