Windows系列操作系统注册表的组成与分析

 Windows NT注册表的组成与分析

  和Windows9x一样,Windows NT也有注册表。注册表是保存系统配置的重要数据库,不过,与Windows 9x相比,它只包含五个部分:

  (1)HKEY-LOCAL-MACHINE:用于保存本机系统的信息,包含硬件与操作系统的数据,如驱动程序、系统配置信息等;

  (2)HKEY-CLASS-ROOT:用于保存与关联有关的信息;

  (3)HKEY-CURRENT-CONFIG:保存与当前的硬件配置文件有关的数据;
www.xker.com()

  (4)HKEY-CURRENT-USER:保存与当前登录的用户有关的环境设置的数据,包含桌面设置、网络连接等;

  (5)HKEY-USERS:保存当用户登录时,所有必须载入的用户配置文件数据,包含缺省的配置文件和登录者的环境配置文件。

  另外,在WINNT中启动注册表编辑器,应该执行”开始/运行”命令,在”运行”对话框中输入REGEDIT32.EXE(而不是Windows 9x的REDEDIT.exe),并确定。

  Windows Me注册表的组成与分析

  与Win 98不同,WinMe的注册表是由Windows目录下的Classes.dat、User.dat(用户配置信息)和System.dat(系统配置信息)三个二进制文件组成的,其”项值”与Win 98一样有字串值(REG_SZ)、二进制值(REG_BINARY)、双字节值(REG_DWORD)三种类型。

  与Win 98相同,WinMe也有个注册表编辑器Windows\Regedit.exe(见图1),用来搜索或修改注册表。









  WinMe注册表编辑器左边窗口中,最上面一层是”我的电脑”,下面有6个分支:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG、HKEY_DYN_DATA,各分支的功能简要描述见表1。

























分支名 功 能
hkey_classes_root 所有用户都要使用该分支,存放可打开文件的类型、扩展名以及与应用程序的关联等
hkey_current_user 保存当前登录用户的系统设置、控制面板选项、映射的网络驱动器等?
hkey_local_machine 保存机器上的所有硬件信息、本机上安装的应用软件信息
hkey_users 保存所有用户的信息,例如安装的应用软件、自定义桌面等
hkey_current_config 计算机上连接的硬件(例如显示器、打印机等)配置数据
hkey_dyn_data 保存系统性能和即插即用状态的动态信息

               WinMe注册表六大根键的功能简要描述表


  与Win 98的Regedit相比,WinMe的注册表编辑器功能有所增加,表现在:

  1.具有记忆功能,每次打开它时,左边窗口中的树形主键分支会自动展开,将焦点定位在最近一次修改过的位置上;

  2.选单栏中新增类似IE的收藏选单,提供收藏夹功能(添加、删除收藏夹),可让您快速定位到需要修改的主键位置。

  假如需要经常检查系统启动时自动调入了哪些程序,可以打开HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run和

  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,用Win 98的注册表编辑器找这两个项,需要多次双击分支,打开一级又一级的注册表项,在WinMe中,这种操作就要轻松多了,只要将以上两项添加到注册表编辑器的收藏夹中,使用时如同用IE那样,打开收藏项即可。添加到收藏夹的方法是:找到要收藏的注册表项,执行选单上的”收藏/添加到收藏夹”,弹出对话框,给该收藏项命名,按”确定”。

  认识Windows2000注册表

  Windows 2000 将它的配置信息存储在名为注册表的数据库中,其中包含了每个计算机用户的配置文件,以及有关系统硬件、已安装的程序和属性设置等信息,Windows 2000 在运行过程中要一直引用这些信息。注册表是以二进制形式存储在硬盘上,错误地编辑注册表可能会严重损坏系统。所以,在更改注册表之前,强烈建议备份注册表信息。为了防止在修改注册表的时候发生致命错误,有必要了解一下注册表文件的备份和恢复方法。除此之外,为了研究注册表的结构,还可以将注册表中的某一主键或子键保存为文本文件,或者打印出来,这项工作同样需要了解注册表文件的导入与导出方法。

#p#副标题#e#

  一、Windows 2000 与Windows98的注册表的比较

  大家也许对Windows98的注册表很熟悉,但是Windows2000毕竟和Windows98不同。本文将以Windows 2000 Professional版本为例,向大家介绍一下Winsows2000的注册表。

  首先要运行注册表编辑器。你可以选择菜单”开始/运行”,在弹出的运行对话框中输入”regedit”,再单击”确定”按钮来启动类似于Windows 9X的注册表编辑器(如图1)。可以看到,它的内容和Win98相比,去掉了HKEY_DYN_DATA根键。只有KEY_LOCAL_MACHINE、HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG、HKEY_USERS、HKEY_CURRENT_USER五个根键。它比Windows 9X下的注册表编辑器增加了许多功能。首先,在右边窗口的键值详细列表中增加了类型列,使我们可以很直观地了解键值的类型,如:如REG_SZ为字符串值,REG_DWORD为DWORD值,REG_BINARY为二进制值等;其次,在菜单栏中增加了类似IE的收藏菜单,提供了收藏夹功能,它可以方便你快速定位到需要经常修改的主键位置;第三,它还提供了记忆功能,即每次当你打开它时,左边窗口中的树形主键分支会自动展开,把焦点定位到你最近一次修改过的位置。

  除了上述类似于Windows 9X的注册表编辑器外,Windows 2000还提供了一个新版的注册表编辑器(注意:下面我们介绍的注册表修改都是在其中进行),位置在D:\WINNT\system32\regedt32.exe(假设D为Windows 2000的安装盘符),运行它,主界面如图2所示。







  这个新版注册表编辑器除了具备原来Windows 9X注册表编辑器全部功能外,最重要的是增加了”安全”菜单,也就是说,管理员可以给注册表项指派”权限”,这一功能在NT中早就采用了,但在面向单机的操作系统中还是首次提供。这使得注册表的安全性大大提高。下面以允许用户访问”控制面板”注册表项但不保存对它的任何修改为例,介绍一下如何指派”权限”。首先在[HKEY_CURRENT_USER]窗口单击”Control Panel”主键,然后选择”安全”菜单中的”权限”,在”Control Panel的权限”对话框中选择用户,再选中”读取”右边的”允许”复选框,最后单击”确定”即可(如图3)。







  该注册表编辑器拥有多个子窗口(如图4),每个子窗口代表本地计算机上的一个预定义项(即五大根键)。这个注册表编辑器不仅可以显示编辑本地计算机的注册表项,还可以访问远程计算机的注册表,当访问远程计算机的注册表时,只可使用两个预定义项[HKEY_USERS]和[HKEY_LOCAL_MACHINE]。







  下面简要说明一下这些预定义项的含义:

  (一)、KEY_LOCAL_MACHINE

  HKEY_LOCAL_MACHINE根键中存放的是用来控制系统和软件的设置。由于这些设置是针对那些使用Windows系统的用户而设置的,是一个公共配置信息,所以它与具体用户无关。该根键下面包含了五个子键:

  1.HARDWARE子键

  该子键包含了系统使用的浮点处理器、串口等有关信息。在它下面存放一些有关超文本终端、数字协处理器和串口等信息。HARDWARE子键又包括三个子键:

  ★DESCRIPTION:用于存放有关系统信息;

  ★DEVICEMAP:用于存放设备映像;

  ★RESOURCEMAP;

  2.SAM子键

  该子键已经被系统保护起来,我们不可能看到里面的内容。

  3.SECURITY子键

  该子键位于HKEY_LOCAL_MACHINE\Security分支上,该分支只是为将来的高级功能而预留的。

  4.SOFTWARE子键

  该子键中保留的是所有已安装的32位应用程序的信息。各个程序的控制信息分别安装在相应的子键中。由于不同的机器安装的应用程序互不相同,因此这个子键下面的子键信息会有很大的差异。

  5.SYSTEM子键

  该子键存放的是启动时所使用的信息和修复系统时所需的信息,其中包括各个驱动程序的描述信息和配置信息等。System子键下面有一个CurrentControlSet子键,系统在这个子键下保存了当前的驱动程序控制集的信息。

#p#副标题#e#

  (二)、HKEY_CLASSES_ROOT根键

  在Windows 2000中对HKEY_CLASSES_ROOT主键做了改进。HKEY_CLASSES_ROOT主键与当前注册使用的用户有关,它实际上是HKEY_CURRENT_USER\SOFTWARE\Classes和HKEY_LOCAL_MACHINE\SOFTWARE\ Classes的交集。如果两者的内容有冲突,则HKEY_CURRENT_USER\SOFTWARE\Classes优先。这个新特性在Windows 2000中叫做“单用户类注册”(per-user class registration)。单用户类注册有如下好处:

  1.同一台计算机上的不同用户可以分别定制不同的Windows 2000

  例如,用户甲安装了ACDSee图形软件,将BMP文件与ACDSee图形软件建立关联。而用户乙安装了PhotoShop图形软件,将BMP文件与PhotoShop图形软件建立关联,当用户乙双击BMP文件时,会自动调用PhotoShop图形软件,而不会调用用户甲安装的ACDSee图形软件。

  2.提高了注册表的安全性

  使用单用户类注册,各个用户有自己的HKEY_CLASSES_ROOT,不再需要通过修改HKEY_LOCAL_MACGINE/SOFTWARE/classes来满足自己的需求,这样系统管理员可以提高HKEY_LOCAL_MACGINE/SOFTWARE/classes的权限,禁止普通用户修改它,而各个用户之间更是不能修改对方的HKEY_CLASSES_ROOT。

  3.支持漫游类注册

  在Windows 2000中,提供了一个叫做IntelliMirror的功能。通过在服务器和客户端同时使用IntelliMirror,用户的数据、应用程序和设置在所有的环境中都可以跟随用户漫游,这当然包括了用户的配置文件。当用户登录到域中任意一台运行Windows 2000的计算机时,首先要通过目录服务中的身份验证,身份验证通过后,保存在服务器上的用户配置文件(包括注册表中的HKEY_CLASSES_ROOT)将复制到该计算机上,好像用户在本地计算机登录一样。  HKEY_CLASSES_ROOT根键中记录的是Windows操作系统中所有数据文件的信息,主要记录不同文件的文件名后缀和与之对应的应用程序。当用户双击一个文档时,系统可以通过这些信息启动相应的应用程序。HKEY_CLASSES_ROOT根键中存放的信息与HKEY_LOCAL_MACHINE\Software\Classes分支中存放的信息是一致的。

  HKEY_CLASSES_ROOT根键由多个子键组成,具体可分为两种:一种是已经注册的各类文件的扩展名,一种是各种文件类型的有关信息。

  (三)、HKEY_CURRENT_CONFIG根键

  如果你在Windows中设置了两套或者两套以上的硬件配置文件(Hardware Configuration file),则在系统启动时将会让用户选择使用哪套配置文件。而HKEY_CURRENT_CONFIG根键中存放的正是当前配置文件的所有信息。

  (四)、HKEY_USERS根键

  HKEY_USERS根键中保存的是默认用户(.DEFAULT)、当前登录用户与软件(Software)的信息。它的下面有三个子键:.DEFAULT子键、S-1-5-21-1229272821-436374067-1060284298-1000和S-1-5-21-1229272821-436374069-1060284298-1000_Classes三个子键,其中最重要的是.DEFAULT子键。

  .DEFAULT子键的配置是针对未来将会被创建的新用户的。新用户根据默认用户的配置信息来生成自己的配置文件,该配置文件包括环境、屏幕、声音等多种信息。

  (五)、HKEY_CURRENT_USER根键

  HKEY_CURRENT_USER根键中保存的信息(当前用户的子键信息)与HKEY_USERS\.Default分支中所保存的信息是相同的。任何对HKEY_CURRENT_USER根键中的信息的修改都会导致对HKEY_USERS\.Default中子键信息的修改,反之也是如此。 

  二、Windows 2000的用户配置文件

  默认情况下,大多数配置单元文件(DEFAULT、SAM、SECURITY、SOFTWARE 和 SYSTEM)均存储在%SystemRoot%\System32\Config文件夹中。而每个计算机用户的用户配置文件信息(包括Ntuser.dat 和Ntuser.dat.log)的位置,取决于Windows 2000是全新安装还是从Windows 95/98 或Windows NT升级安装。在全新安装以及从Windows 95/98升级安装的情况下,Ntuser.dat 和Ntuser.dat.log文件存储在%SystemDrive%\Documents and Settings\username文件夹中。在从Windows NT升级的安装中,Ntuser.dat 和Ntuser.dat.log文件存储在%SystemRroot%\Profiles\username文件夹中。

#p#副标题#e#

  Windows 2000注册表中的每个配置单元均与一组标准文件相关联。如图5显示运行 Windows 2000 的计算机的标准配置单元和文件。







  由于注册表是树形结构的,所以可以将注册表里的内容形象地描述为树枝和树叶。树枝下可以有多个树枝,也可以有多个树叶。这个树枝,我们把它叫做“项”,树叶呢,叫做“值项”。值项包括三部分:值的名称、值的数据类型以及值本身。

  如图6列出系统定义和使用的值项的数据类型。