使用注册表本章学习目标•本章主要讲解注册表的基本知识。通过本章学习,读者应该掌握以下知识:注册表的作用;注册表的结构;注册表子目录树的功能;注册表编辑器的使用。2.1注册表概述•2.1.1什么是注册表•注册表是一个树状分层的数据库,包含计算机中每个用户的配置文件、有关系统硬件的信息、安装的程序及属性设置等各种计算机软、硬件配置数据。注册表中存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序的运行,在整个Windows系统中起着核心作用。用户可以通过注册表调整软件的运行性能、检测和恢复系统错误、定制桌面等。系统管理员还可以通过注册表来完成系统远程管理等•概括起来,注册表包括如下一些主要内容:•(1)软、硬件的有关配置和状态信息。注册表中保存有应用程序的初始条件、首选项等信息。•(2)整个计算机系统的设置和各种许可,文件扩展名与应用程序的关联关系,硬件部件的描述、状态和属性等。•(3)性能记录和其它底层的系统状态信息。2.1.2注册表的作用(1)•注册表在WindowsServer2003中起到中介的作用,负责系统同软件、硬件、用户之间的沟通。在WindowsServer2003中运行一个应用程序的时候,系统会从注册表取得相关信息,如数据文件的类型、保存文件的位置、菜单的样式、工具栏的内容、相应软件的安装日期、用户名、版本号、序列号等。用户可以定制应用软件的菜单、工具栏和外观,相关信息即存储在注册表中。利用注册表的这些特性,许多软件的试用版都可限制用户的使用次数或时间。2.1.2注册表的作用(2)•注册表会自动记录用户操作的结果。当用户改变了窗口的位置,大小和状态后,下一次打开同一窗口时,窗口会保持同样的位置和大小。这是因为在关闭窗口时,窗口的位置、状态(如最大化)、大小等信息也同时被保存在注册表中。在下一次打开窗口时,系统会从注册表取相应的参数,然后按照这些参数配置打开的窗口。同样,桌面的图标、任务栏的大小和位置也由注册表控制,当改变它们的大小和位置时,注册表会记录下它们在关机之前的位置。在下一次启动时,再从注册表取得相应的数据,并按照注册表中的信息显示这些对象。2.1.3注册表的结构图18-1注册表结构图注册表子目录树(1)•Windows有两个注册表子目录树:HKEY_LOCAL_MACHINE和HKEY_USERS。为了使注册表中的信息更容易查找,注册表编辑器显示出五个子目录树,它们分别是:•(1)HKEY_LOCAL_MACHINE:包含本地计算机的系统信息,用于任何用户。包括硬件和应用程序信息。如总线类型、系统内存、设备驱动程序和计算机专用的各类软件设置信息。注册表子目录树(2)•(2)HKEY_USERS:包含所有登录用户的信息。这些信息告诉系统当前用户使用的图标、激活的程序组、开始菜单的内容以及颜色、字体等。远程访问服务器的用户在服务器中注册表的该项下没有配置文件,他们的配置文件加载到他们自己计算机的注册表中。注册表子目录树(3)•(3)HKEY_CLASSES_ROOT:包含启动应用程序所需的全部信息。包括扩展名、应用程序与文档之间的关系、驱动程序名、OLE信息、应用程序与文档的图标等。该子目录树是从HKEY_LOCAL_MACHINE中映射出来的。该子目录树指向HKEY_LOCAL_MACHINE\SOFTWARE\Classes。注册表子目录树(4)•(4)HKEY_CURRENT_USER:包含当前登录用户的配置信息,包括环境变量、个人程序、桌面设置等。HKEY_CURRENT_USER是HKEY_USERS的子项。任何对HKEY_CURRENT_USER根键中的信息的修改都会导致HKEY_USERS\.DEFAULT子键信息的修改。该信息被称为用户配置文件。注册表子目录树(5)•(5)HKEY_CURRENT_CONFIG:包含有关本地计算机在系统启动时使用的硬件配置文件的信息。例如要加载的设备驱动程序或显示时使用的分辨率。如果你在Windows中设置了两个或者两个以上的硬件配置文件(HardwareConfigurationfile),则系统在启动时将会让用户选择使用哪个配置文件,其根键中存放的是当前配置文件的信息。HKEY_CURRENT_CONFIG的信息是从HKEY_LOCAL_MACHINE中映射出来的。该子目录树指向HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\HardwareProfiles\Current。2.注册表配置单元和文件•注册表配置单元是注册表中的一组项、子项和值,对应一组支持文件,这些文件包含其数据的备份。在WindowsServer2003中,除HKEY_CURRENT_USER之外,所有其他配置单元的支持文件都位于%SystemRoot%\System32\Config文件夹中(%SystemRoot%指操作系统根目录)。•其中包括default、SAM、SECURITY、Software、System和以log、sav为扩展名的同名文件。•HKEY_CURRENT_USER的支持文件(包括Ntuser.dat和Ntuser.dat.log)位于对应用户的文件夹中。例如,如果用户super的WindowsServer2003系统文件在c分区的Windows目录中,则配置单元文件被存储在c:\windows\system32\config文件夹中。而用户super的配置文件则在C:\DocumentsandSettings\super文件夹中。注册表配置单元也称注册表文件或注册表日志文件。3.注册表项中的值项•每个注册表项或子项都可以包含称为值项的数据。有些值项存储每个用户的特殊信息,而有些值项则存储应用于该计算机中所有用户的信息。值项包括三部分:值的名称、值的数据类型和值本身。表2-2由系统定义和使用的数据类型数据类型说明REG_SZ固定长度的字符串。REG_BINARY(二进制值)原始二进制数据。大多数硬件组件信息作为二进制数据存储,以十六进制的格式显示在注册表编辑器中。REG_DWORD(双字节数)由4字节长(32位整数)的数字表示的数据。设备驱动程序和服务的许多参数都是此类型,以二进制、十六进制或十进制格式显示在注册表编辑器中。与之有关的值是DWORD_LITTLE_ENDIAN(最不重要的字节在最低位地址)和REG_DWORD_BIG_ENDIAN(最不重要的字节在最高位地址)。REG_EXPAND_SZ长度可变的字符串。该数据类型包含在程序或服务中使用的各种数据变量。REG_MULTI_SZ多个字符串。可被用户读取的列表或具有多个值的项目通常为该类型。各条目之间用空格、逗号或其他标记分隔。REG_FULL_RESOURCE_DESCRIPTOR设计用来存储硬件元件或驱动程序的资源列表的一列嵌套数组。2.1.4注册表编辑器(1)•注册表编辑器是用来查看或更改系统注册表设置的实用程序。WindowsServer2003提供了注册表编辑器Regedit.exe,它被自动安装在%SystemRoot%文件夹中。2.1.4注册表编辑器(2)图8-2Regedit注册表编辑器2.2注册表子目录树•在WindowsServer2003中,注册表由多个文件组成,不同的文件包含有不同的内容。通过系统提供的注册表编辑器,可把保存在不同文件中的系统配置信息关联起来,组织成一个分级的树型结构,每一类功能的配置信息被组织在一起,每一类都被称为一项。针对某一项中的内容,再根据功能和作用进行更细致的划分,划分为若干个更小的类,其中的每一个小类都是一个子项。注册表的每一项都有一个项名,用户可以设置每一项的项值。系统正是利用为每一项所赋的值为硬件和软件进行配置的。2.2.1HKEY_CURRENT_USER(1)•HKEY_CURRENT_USER子目录树是WindowsServer2003注册表最重要的部分之一,它包含WindowsServer2003系统以及应用软件的配置信息,包括声音、时间、控制面板的功能(如桌面、鼠标、配色方案、屏幕保护程序)、键盘等建立的配置信息以及安装软件时由安装程序建立的项和值(如图18-3所示)。下面介绍一些HKEY_CURRENT_USER中常用项。2.2.1HKEY_CURRENT_USER(2)图8-3HKEY_CURRENT_USER子目录树2.2.1HKEY_CURRENT_USER(3)1.HKEY_CURRENT_USER\AppEventsHKEY_CURRENT_USER\AppEvents及其子项,定义了系统特定事件的名称以及发生该事件时系统的声音提示。其中,HKEY_CURRENT_USER\AppEvents\EventLabels子项定义了特定事件的名称,如“最大化”、“启动Windows”、“电池电力不足警告”等,此处的设置在控制面板中“声音和音频设备”对话框的“声音”选项卡的“程序事件”列表中列出。HKEY_CURRENT_USER\AppEvents\Schemes子项则定义了发生特定的事件时系统要播放的声音文件。2.2.1HKEY_CURRENT_USER(4)•2.HKEY_CURRENT_USER\Console•HKEY_CURRENT_USER\Console定义了“命令提示符”窗口的一些特性,如光标大小、窗口大小、字体、屏幕及字体颜色等内容。对应的在“命令提示符属性”对话框中可以进行相应的设置,其设置的结果就保存在该项中。•3.HKEY_CURRENT_USER\ControlPanel•用户在“控制面板”中进行的大部分设置,都保存在此项中,包括辅助功能选项、显示器、鼠标、区域选项、屏幕保护等信息。2.2.1HKEY_CURRENT_USER(5)4.HKEY_CURRENT_USER\Environment该项目定义了系统以及其他登录用户的临时文件的存放目录。5.HKEY_CURRENT_USER\Printers此项目列出了有关打印机的设置信息,其中DevModePerUser子项中保存本地安装的所有打印机及其设置信息。6.HKEY_CURRENT_USER\KeyboardLayout该项目中保存着系统的键盘布局设置,其中Preload子项保存已添加的输入法的编号。在“区域选项”对话框中的“输入法区域设置”选项卡中可以对该子项进行设置。7.HKEY_CURRENT_USER\software该项目包含系统、系统附带的应用软件以及已经在系统中安装的其他软件的设置信息。使用这些软件时所作的设置以及应用软件的默认设置信息,都将保存在相应子项中。2.2.2HKEY_LOCAL_MACHINE(1)•HKEY_LOCAL_MACHINE子目录树中的设置内容是关于本地计算机系统的信息,包括硬件和操作系统数据,如总线类型、系统内存、设备驱动程序和启动控制数据。这些信息只与本地的用户有关。HKEY_LOCAL_MACHINE包含五个子项(如图18-5所示)。注意不能使用注册表编辑器修改HKEY_LOCAL_MACHINE子目录树中的SAM子项和SECURITY子项,这些子项对应的是“计算机管理器”等系统功能。2.2.2HKEY_LOCAL_MACHINE(2)图8-4HKEY_LOCAL_MACHINE子目录树2.2.2HKEY_LOCAL_MACHINE(3)•1.HKEY_LOCAL_MACHINE\HARDWARE•该子目录保存了WindowsServer2003系统中的所有硬件信息。在WindowsServer2003中,系统和应用程序都是通过该项的设置与具体的硬件进行沟通。2.2.2HKEY_LOCAL_MACHINE(4)•2.HEKY_LOCAL_MACHINE\SOFTWARE•该子项包含系统中软件的设置信息。由于用户安装的软件不同,该项中的设置信息也会不同。•3.HEKY_LOCAL_MAC