认识注册表
一.注册表及其由来
    PC机及其操作系统的一个特点就是允许用户按照自己的要求对计算机系统的硬件和软件进行各种各样的配置。早期的图形操作系统,如Win3.x中,软硬件工作环境的配置是通过对扩展名为.ini的文件进行修改来完成的,但INI文件管理起来很不方便,因为每种设备或应用程序都得有自己的INI文件(在Windows操作系统家族中,system.ini和win.ini这两个文件包含了操作系统所有的控制功能和应用程序的信息。system.ini管理计算机硬件,而win.ini管理桌面和应用程序。所有驱动、字体、设置和参数都会保存在.ini文件中,任何新程序都会被记录在.ini文件中。这些记录会在程序代码中被引用。因为受win.ini和system.ini文件大小的限制,所以程序员靠添加辅助的.ini文件来控制更多的应用程序),而且在网络上难以实现远程访问。为了克服上述这些问题,在Windows 95及其后继版本中,采用了一种叫做”注册表”(registry)的数据库来统一进行管理,将各种信息资源集中起来并存储各种配置信息。按照这一原则,Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表,用来管理应用程序和文件的关联、硬件设备说明、状态属性以及各种状态信息和数据等。
1.注册表与INI文件的区别
进入注册表(1)注册表采用二进制形式登录数据;
(2)注册表支持子键,各级子键都有自己的键值;
(3)注册表中的键值项可以包含可执行代码,而不是简单的字串;
(4)在同一台计算机上,注册表可以存储多个用户的特性。
2.注册表的特点
(1)注册表允许对硬件、系统参数、应用程序和设备驱动程序进行跟踪配置,这使得修改某些设置后不用重新启动成为可能。
(2)注册表中登录的硬件部分数据可以支持高版本的即插即用特性。当Windows检测到机器上的新设备时,就把有关数据保存到注册表中。另外,还可以避免新设备与原有设备之间的资源的冲突。
(3)管理人员和用户通过注册表可以在网络上检查系统的配置和设置,使得远程管理得以实现。
    前面我们介绍了注册表的概念与由来,可以看出注册表尽管比较复杂,但又是十分有条理的,能有效地提高系统效率,为系统的维护提供必要条件。用户无法直接存取注册表。为了让高级用户能够编辑注册表,Windows提供了注册表编辑器()的工具,它可以用来查看和维护注册表(在Windows的目录下到它双击,或者在”运行”中输入”regedit”后按”确定”都能打开它)。
二.注册表的结构
    我们可以看到,注册表编辑器与资源管理器的界面相似。左边窗格中由”我的电脑”开始,以下是六个分支,每个分支名都HKEY开头,称为根键(KEY,也称主键),展开后可以看到根键还包含子键(SubKEY)。当单击某一根键或子键时,右边窗格中显示的是所选根键或子键内包含的一个或多个键值项和键值。根键中可以包含多级子键,注册表中的信息就是按照多级的层次结构组织的。每个分支中保存计算机软件或硬件设备中某一方面的信息与数据。
1.六大根键
(1)HKEY_USERS
该根键保存了存放在本地计算机口令列表中的用户标志和密码列表。每个用户的预配置信息都保存在HKEY_USERS根键中。HKEY_USERS是远程计算机中访问的根键之一。
(2)HKEY_CURRENT_USER
该根键包含本地工作站中存放的当前登录的用户信息,包括用户登录的用户名和暂存的密码。用户登录Windows 98时,其信息从HKEY_USERS中相应的项拷贝到HKEY_CURRENT_USER中。
(3)HKEY_CURRENT_CONFIG
    该根键存放着定义当前用户桌面配置(如显示器等)的数据、最后使用的文档列表和其他有关当前用户的Windows 98中文版的安装信息。
(4)HKEY_CLASSES_ROOT
    包含注册的所有OLE(对象链接与嵌入)信息和文档类型,是从HKEY_LOCAL_MAC- HNG\Software\Classes复制的。根据在Windows 98中文版安装的应用程序的扩展名,该根键指明其文件类型的名称。
(5)HKEY_LOCAL_MACHINE
该根键存放本地计算机硬件数据,此根键下的子关键字包括在system.dat中,用来提供HKEY_LOCAL_MACHINE所需的信息,或者包括在远程计算机中可访问的一组键中。该根键中的许多子键与system.ini文件中设置项类似。
(6)HKEY_DYN_DATA
该根键存放了系统在运行时的动态数据,此数据在每次显示时都是变化的,因此,此根键下的信息没有放在注册表中。
2.根键、子键、键值项和键值
注册表通过根键和子键来管理各种信息。但是注册表中的所有信息是以各种形式的键值项和
键值保存下来。在注册表编辑器右窗格中,保存的都是键值项和键值。这些键值可分为如下三种类型:
(1)字符串值
在注册表中,字符串值一般用来表示文件的描述和硬件的标志。通常由字母和数字组成,也可以是汉字,最大长度不能超过255个字符。如”a”=”***”。
(2)二进制值
在注册表中二进制值是没有长度限制的,可以是任意字节长。在注册表编辑器中,二进制以十六进制的方式表示。如”a”=hex:01,00,00,00。
(3)DWORD值
DWORD值是一个32位(4个字节)的数值。在注册表编辑器中也是以十六进制的方式表示。如”a”=dword:00000001。