注:本文和今后的系列文章中均以Windows XP的注册表为例(与Windows.NET Server注册表相同)来作介绍。
1.1注册表的概念
Windows的注册表实质上是一个庞大的数据库,用来存储计算机软硬件的各种配置信息其内容有几下几个方面:
软硬件的有关配置和状态信息,应用程序和资源管理器外壳的初始条件、首选项和卸载数据。
计算机整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件的描述、状态和属性。
计算机性能记录和底层的系统状态信息以及各类其它数据。
1.2注册表与早期ini文件的区别
在早期的Windows操作系统中(如Windows 3.x)中是通过两个扩展名为ini的文件(system.ini和win.ini)来完成对软硬件工作环境的配置的。其中,system.ini控制软件,而win.ini控制桌面和应用程序。ini文件的缺点是大小被限制在64KB以内,但是随着操作系统的功能日益强大,应用程序不断增加,不得不增加新的ini文件来对应用程序进行控制。这使ini文件体积庞大,操作系统运行速度降低,管理和维护也不尽方便。而且,ini文件容易被文本编辑器编辑,编辑过程易出错从而造成系统比较脆弱。另外,ini文件只存储在本机上,想通过网络进行远程访问几乎是不可能的。
为了改进以上不足,在Win 95 及其后的版本中,就采用注册表管理配置信息的方法,它与ini文件的主要区别如下:
注册表使用二进制形式存储数据。
注册表支持主键,各级子键都有自己的“键值项”。
注册表中的键值项不止是简单的字串,而且包含着可执行代码。
在同一台计算机上,注册表允许存储多个用户的特性。
1.3注册表的功能
在Windows XP 操作系统中,注册表作为一个保存驱动程序所有设置及存放位置的数据库,与Windows XP系统及驱动程序间有着密切关系,扮演着操作系统与驱动程序连接者的角色。
当操作系统访问硬件设备时,针对BIOS设置程序报告给Windows XP的设备,Windows XP会将适当的驱动程序装在到系统中。这些驱动程序独立于操作系统,操作系统只需要它们的位置、文件名和版本号等,而这些信息全都存储在注册表的HEKY_LOCAL_MACHINEHARDWARE中。
同时,注册表也承当着操作系统与应用软件的连接者。在应用程序安装时,安装程序会向注册表中写入相关的运行设置。在应用软件运行时,就从注册表里读取所需要的设置数据,以便找到所需程序或动态连接库。
我们可以通过修改注册表订制个性化桌面;手动对某些软硬件参数进行修改而无需重启系统;通过删除注册表中的垃圾信息,可以提高计算机运行速度;恢复受损的注册表可解决系统故障和错误;由注册表可在网上检查系统的配置和设置,实现远程管理系统。
1.4Windows XP注册表文件位置及组成
Winndows XP注册表的数据文件放在C:\Windows\System32\config文件夹内分别是DEFAULT、SAM、SECURITY、SYSTEM、SOFTWARE和userdiff。如图所示:
打开注册表编辑器的方法是单击[开始]|[运行],在命令行中输入“regedit”或“regedt32”,点[确定]或回车即可。注册表的结构组成由根键、主键、子键和键值项等组成。如图所示,根键(root key)是指在注册表编辑器左边窗口中以“HKEY”作为前缀开头的字符串,因其处于注册表的最顶层而被称为根键,Windows XP注册表中包括五大根键,都存于根目录“我的电脑”下,分别为HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS和HKEY_CURRENT_CONFIG。
主键(main key)是指根键下面与根键最近的键,主键通常包括一个或多个子键或值项。如图中HKEY_CURRENT_USER中包括14个主键。子键(sub key)是指包含在主键下面的键,其名称是相对于主键而言的。每个主键下面通常包含若干子键,如主键AppEvents下面包含两个子键。
键值项(value entry)是指显示在注册表编辑器右边的各种信息,如图所示,每个键值项包括名称、类型和数据三部分。键值项的名称可以由任意字符、数字、代表符合空格组成,但不能使用反斜杠。不同根键、主键和子键的键值项可以同名,但同一键中的键值项不能同名。键值项所定义的内容就是该键值项的值,其数据最大可以占用64KB的空间。值的数据类型可以是字符串、二进制值、DWORD(双字节)值等。