第12章 使用注册表
本章学习目标 本章主要讲解注册表的基本知识。通过本章学习,读者应该掌握以下知识: 注册表的作用; 注册表的结构; 注册表子目录树的功能; 注册表编辑器的使用。
12.1 注册表概述 12.1.1 什么是注册表 注册表是一个树状分层的数据库,包含计算机中每个用户的配置文件、有关系统硬件的信息、安装的程序及属性设置等各种计算机软、硬件配置数据。注册表中存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序的运行,在整个Windows系统中起着核心作用。用户可以通过注册表调整软件的运行性能、检测和恢复系统错误、定制桌面等。系统管理员还可以通过注册表来完成系统远程管理等。概括起来,注册表包括如下一些主要内容: (1)软、硬件的有关配置和状态信息。注册表中保存有应用程序的初始条件、首选项等信息。 (2)整个计算机系统的设置和各种许可,文件扩展名与应用程序的关联关系,硬件部件的描述、状态和属性等。 (3)性能记录和其它底层的系统状态信息。
12.1.2 注册表的作用 (1) 注册表在Windows Server 2003中起到中介的作用,负责系统同软件、硬件、用户之间的沟通。在Windows Server 2003中运行一个应用程序的时候,系统会从注册表取得相关信息,如数据文件的类型、保存文件的位置、菜单的样式、工具栏的内容、相应软件的安装日期、用户名、版本号、序列号等。用户可以定制应用软件的菜单、工具栏和外观,相关信息即存储在注册表中。利用注册表的这些特性,许多软件的试用版都可限制用户的使用次数或时间。
12.1.2 注册表的作用 (2) 注册表会自动记录用户操作的结果。当用户改变了窗口的位置,大小和状态后,下一次打开同一窗口时,窗口会保持同样的位置和大小。这是因为在关闭窗口时,窗口的位置、状态(如最大化)、大小等信息也同时被保存在注册表中。在下一次打开窗口时,系统会从注册表取相应的参数,然后按照这些参数配置打开的窗口。同样,桌面的图标、任务栏的大小和位置也由注册表控制,当改变它们的大小和位置时,注册表会记录下它们在关机之前的位置。在下一次启动时,再从注册表取得相应的数据,并按照注册表中的信息显示这些对象。
12.1.3 注册表的结构 图12-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中设置了两个或者两个以上的硬件配置文件(Hardware Configuration file),则系统在启动时将会让用户选择使用哪个配置文件,其根键中存放的是当前配置文件的信息。HKEY_CURRENT_CONFIG的信息是从HKEY_LOCAL_MACHINE中映射出来的。该子目录树指向HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\HardwareProfiles\Current。
2. 注册表配置单元和文件 注册表配置单元是注册表中的一组项、子项和值,对应一组支持文件,这些文件包含其数据的备份。在Windows Server 2003中,除HKEY_CURRENT_USER之外,所有其他配置单元的支持文件都位于%SystemRoot%\System32\Config文件夹中(%SystemRoot%指操作系统根目录)。其中包括default、SAM、SECURITY、Software、System和以log、sav为扩展名的同名文件。HKEY_CURRENT_USER的支持文件(包括Ntuser.dat和Ntuser.dat.log)位于对应用户的文件夹中。例如,如果用户super的Windows Server 2003系统文件在c分区的Windows目录中,则配置单元文件被存储在c:\windows\system32\config文件夹中。而用户super的配置文件则在C:\Documents and Settings\super文件夹中。注册表配置单元也称注册表文件或注册表日志文件。
3.注册表项中的值项 每个注册表项或子项都可以包含称为值项的数据。有些值项存储每个用户的特殊信息,而有些值项则存储应用于该计算机中所有用户的信息。值项包括三部分:值的名称、值的数据类型和值本身。
表12-2 由系统定义和使用的数据类型
12.1.4 注册表编辑器(1) 注册表编辑器是用来查看或更改系统注册表设置的实用程序。Windows Server 2003提供了注册表编辑器Regedit.exe,它被自动安装在%SystemRoot%文件夹中。
12.1.4 注册表编辑器(2) 图8-2 Regedit注册表编辑器
12.2 注册表子目录树 在Windows Server 2003中,注册表由多个文件组成,不同的文件包含有不同的内容。通过系统提供的注册表编辑器,可把保存在不同文件中的系统配置信息关联起来,组织成一个分级的树型结构,每一类功能的配置信息被组织在一起,每一类都被称为一项。针对某一项中的内容,再根据功能和作用进行更细致的划分,划分为若干个更小的类,其中的每一个小类都是一个子项。注册表的每一项都有一个项名,用户可以设置每一项的项值。系统正是利用为每一项所赋的值为硬件和软件进行配置的。
12.2.1 HKEY_CURRENT_USER(1) HKEY_CURRENT_USER子目录树是Windows Server 2003注册表最重要的部分之一,它包含Windows Server 2003系统以及应用软件的配置信息,包括声音、时间、控制面板的功能(如桌面、鼠标、配色方案、屏幕保护程序)、键盘等建立的配置信息以及安装软件时由安装程序建立的项和值(如图12-3所示)。下面介绍一些HKEY_CURRENT_USER中常用项。
12.2.1 HKEY_CURRENT_USER(2) 图8-3 HKEY_CURRENT_USER子目录树
12.2.1 HKEY_CURRENT_USER(3) 1.HKEY_CURRENT_USER\AppEvents HKEY_CURRENT_USER\AppEvents及其子项,定义了系统特定事件的名称以及发生该事件时系统的声音提示。其中,HKEY_CURRENT_USER\AppEvents\EventLabels子项定义了特定事件的名称,如“最大化”、“启动Windows”、“电池电力不足警告”等,此处的设置在控制面板中“声音和音频设备”对话框的“声音”选项卡的“程序事件”列表中列出。HKEY_CURRENT_USER\AppEvents\Schemes子项则定义了发生特定的事件时系统要播放的声音文件。
12.2.1 HKEY_CURRENT_USER(4) 2.HKEY_CURRENT_USER\Console 3.HKEY_CURRENT_USER\Control Panel 用户在“控制面板”中进行的大部分设置,都保存在此项中,包括辅助功能选项、显示器、鼠标、区域选项、屏幕保护等信息。
12.2.1 HKEY_CURRENT_USER(5) 4.HKEY_CURRENT_USER\Environment 该项目定义了系统以及其他登录用户的临时文件的存放目录。 5.HKEY_CURRENT_USER\Printers 此项目列出了有关打印机的设置信息,其中DevModePerUser子项中保存本地安装的所有打印机及其设置信息。 6.HKEY_CURRENT_USER\Keyboard Layout 该项目中保存着系统的键盘布局设置,其中Preload子项保存已添加的输入法的编号。在“区域选项”对话框中的“输入法区域设置”选项卡中可以对该子项进行设置。 7.HKEY_CURRENT_USER\software 该项目包含系统、系统附带的应用软件以及已经在系统中安装的其他软件的设置信息。使用这些软件时所作的设置以及应用软件的默认设置信息,都将保存在相应子项中。
12.2.2 HKEY_LOCAL_MACHINE(1) HKEY_LOCAL_MACHINE子目录树中的设置内容是关于本地计算机系统的信息,包括硬件和操作系统数据,如总线类型、系统内存、设备驱动程序和启动控制数据。这些信息只与本地的用户有关。HKEY_LOCAL_MACHINE包含五个子项(如图12-5所示)。注意不能使用注册表编辑器修改HKEY_LOCAL_MACHINE子目录树中的SAM子项和SECURITY子项,这些子项对应的是“计算机管理器”等系统功能。
12.2.2 HKEY_LOCAL_MACHINE(2)
12.2.2 HKEY_LOCAL_MACHINE(3) 1.HKEY_LOCAL_MACHINE\HARDWARE 该子目录保存了Windows Server 2003 系统中的所有硬件信息。在Windows Server 2003中,系统和应用程序都是通过该项的设置与具体的硬件进行沟通。
12.2.2 HKEY_LOCAL_MACHINE(4) 2.HEKY_LOCAL_MACHINE\SOFTWARE 该子项包含系统中软件的设置信息。由于用户安装的软件不同,该项中的设置信息也会不同。 3.HEKY_LOCAL_MACHINE\SYSTEM 该子项包含系统启动需要的详细信息,包含设备的驱动程序及其配置信息、控制数据、系统分区及其他驱动器的设置信息,以及系统不能启动时,如何恢复正确配置信息。
12.2.3 HKEY_CLASSES_ROOT(1) 为了加强对系统数据类型的管理,Windows Server 2003在注册表中组织了HKEY_CLASSES_ROOT子目录树,它包含了对数据文件类型的定义;每一种在系统中注册过的文件类型,都会在此建立一个子项(如图12-5所示)。在每一个子项中定义了数据文档的扩展名、扩展名的说明性文字、在文件列表窗口中显示的图标以及与数据文档关联的应用程序和应用程序对数据文档的操作方式。如果用户要动手注册新的数据文档,可以在HKEY_CLASSES_ROOT中创建相应的子项。
12.2.3 HKEY_CLASSES_ROOT(2) 图8-5 HKEY_CLASSES_ROOT子目录树
12.2.3 HKEY_CLASSES_ROOT(3) 用户选择“我的电脑”窗口中的选择菜单“工具”/“文件夹选项”命令,打开“文件夹选项”对话框,在“文件类型”选项卡中所做的任何更改都会如实记录到HKEY_CLASSES_ROOT子目录树中。但这种方式不能对HKEY_CLASSES_ROOT中所有子项进行修改,如果要实现某些特殊功能,还需手工配置HKEY_CLASSES_ROOT中的一些子项。
12.2.4 HKEY_USERS(1) HKEY_USERS子目录树(如图12-6所示)是控制用户配置文件的,它包含所有用户的配置文件的内容。每个用户都对应HKEY_USERS项中一个子项,如S-1-5-19。 HKEY_USERS\.DEFAULT子项定义了默认登录用户的环境变量,如果用户对该子项进行了修改,将会影响登录到本机上的所有新用户的系统环境;但是如果管理员已经为用户定义了与默认配置不同的配置文件,对该子项的修改不会影响该用户。
12.2.4 HKEY_USERS(2) 图8-6 HKEY_USERS子目录树
12.2.4 HKEY_USERS(3) HKEY_USERS\S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-500(x表示一整数,不同计算机不同)子项是当前登录用户的配置信息。每一个登录的用户都会有一个类似的子项,作为该用户的数字标识,每个用户的数字标识都是独一无二的。 如果没有为用户设置不同于HKEY_USERS\.DEFAULT子项的配置文件,该用户将使用HKEY_USERS\.DEFAULT子项的配置文件。在登录用户的配置信息中,有两个子项是HKEY_USERS\.DEFAULT不包含的子项,它们分别是Network和Printers子项。其中Network子项中包含网络用户使用的映射驱动器的定义,Printers子项定义了有关共享打印机的设置。
12.2.5 HKEY_CURRENT_CONFIG(1) HKEY_CURRENT_CONFIG子目录树是用来控制系统硬件配置信息的,它包含系统不同的硬件配置信息之间的差异。如果在系统中设置了多个不同的正确配置文件,则系统在启动时会让用户选择要使用的配置文件。HKEY_CURRENT_CONFIG控制项代表的就是用户或用户选择的硬件配置文件,但是它只列出用户选择的配置文件与其它配置文件不同的地方。 HKEY_CURRENT_CONFIG子目录树中有两个子项,如图12-7所示,其中Software子项保存了不同硬件配置信息在硬件驱动程序上的差异,如果不同硬件配置信息在硬件所使用的软件上没有差异,在该子项中不会列出任何信息。 System\CurrentControlSet\Control子项中保存着当前配置文件与其它正确的配置文件,在是否激活上存在的差异。
12.2.5 HKEY_CURRENT_CONFIG(2)
12.3 注册表的管理和维护 如前所述,使用注册表编辑器,可以实现对注册表的维护。选择“开始”菜单的“运行”命令,在“运行”对话框中输入regedit或者regedt32,单击“确定”按钮即可启动注册表编辑器。
12.3.1 导出注册表文件(1) 步骤一,打开注册表编辑器; 步骤二,选择“注册表”菜单中的“导出注册表文件”命令,打开如图12-8对话框; 步骤三,根据需要选择导出“整个”注册表或者“导出所选分支”,即当前某个子目录树或者子项; 步骤四,选择导出路径,在“文件名”下拉文本框中输入存储注册表文件的名称。 步骤五,单击“保存”按钮,完成操作。
12.3.1 导出注册表文件(1) 图12-8 导出注册表文件
12.3.2 导入注册表文件 当注册表出现错误或者需要还原导出的注册表配置信息,通过注册表编辑器的导入功能可很快恢复注册表配置信息,过程如下: 步骤一,打开注册表编辑器; 步骤二,选择“注册表”菜单中的“导入注册表文件”命令,打开对话框; 步骤三,找到已经导出的注册表文件,然后单击“打开”按钮即可对现有的注册表信息进行还原。
12.3.3 查找字符串、值或注册表项(1) 由于注册表是计算机系统的核心,包括的内容特别多。注册表编辑器提供类似于我们常用的文本编辑软件中的查找功能,可以快速找到要操作的对象,过程如下: 步骤一,在注册表编辑器中,选择“编辑”菜单中的“查找”命令,打开“查找”对话框,如图12-9所示。 步骤二,在“查找目标”文本框中,输入要查找的内容。 步骤三,选择查找范围,包括“项”、“值”、“数据”,根据需要选择“全字匹配”复选框,以匹配要搜索的类型,然后单击“查找下一个”按钮即可开始查找。
12.3.3 查找字符串、值或注册表项(2) 图12-9 查找字符串、值或注册表项
12.3.4 添加项和值(1) 步骤一,打开REGEDIT注册表编辑器。 步骤二,选择要添加子项或者值的项目,例如HKEY_LOCAL_MACHINE\SAM项目,然后选择“编辑”菜单中的“新建”子菜单。 步骤三,如果要添加子项,选择“新建”菜单中的“项”命令,编辑器就会在所选择的项目下添加一个子项,默认名称为“新项#1”,如图12-10所示。 步骤四,修改新项的名称,然后回车即可。
12.3.4 添加项和值(2) 图8-10 添加子项
12.3.5 连接网络注册表(1) 如果要查看网络上其它机器的注册表,选择“注册表”菜单中的“连接网络注册表”,打开如图12-12所示对话,输入要查看的计算机名,或者点击“位置”按钮,选择要查询的位置,从网络上查找要连接的计算机。
12.3.5 连接网络注册表(2) 图8-12 连接网络注册表
12.3.6 装载和卸载配置单元(1) “加载配置单元”和“卸载配置单元”命令仅仅影响显示HKEY_USERS和HKEY_LOCAL_MACHINE的注册窗口。只有当HKEY_LOCAL_MACHINE或HKEY_USERS目录项被选择时,“加载配置单元”命令才是可用的。只有当子目录树或其中的一个项被选择时,“卸载配置单元”命令才是可用的。
12.3.6 装载和卸载配置单元(2) 步骤一,选择HKEY_LOCAL_MACHINE或HKEY_USERS子目录树。 步骤二,在注册表编辑器的“文件”菜单中,选择“加载配置单元”命令,打开“加载配置单元”对话框。 步骤三,在“查找范围”中,选择要加载配置单元的文件名和路径,然后单击“打开”按钮即可。这个文件在注册表中创建一个新的子目录树,用户可以用包括空格在内的任意字符来指定这个配置单元文件在注册表中的子项的名字。另外,用户不能装入一个已存在的子目录树,装入到配置单元中的数据在HKEY_USERS或HKEY_LOCAL_MACHINE下以新子目录树的形式出现。直到被卸载之前,装入的配置单元始终保留在系统中。
12.3.7 维护注册表的安全性(1) 1.给注册表项指派权限 要想真正保护注册表的安全,建议必须设置注册表的安全权限,方法如下: 步骤一,打开REGEDT注册表编辑器。 步骤二,选择要指派权限的项(如HKEY_ LOCAL_MACHINE),然后选择“编辑”菜单的“权限”命令,打开所选项目的权限对话框,如图12-13所示。 步骤三,根据需要为用户指派不同的权限。如果要授予用户读取该项内容的权限,不能更改文件的内容,则可在“名称的权限”列表框中选择要设置权限的用户,然后启用“读取”后面的“允许”复选框。 步骤四,单击“确定”按钮,保存设置。
12.3.7 维护注册表的安全性(2) 图8-13 设置注册表 的权限
12.3.7 维护注册表的安全性(3) 2.给注册表项指派特殊访问 给注册表项指派特殊访问步骤 如下: 步骤一,打开REGEDT注册表编辑器。 步骤二,单击要指派特殊访问权限的项。 步骤三,单击“编辑”菜单上的“权限”。 步骤四,单击“高级”,再双击要为其指派特殊访问权限的用户或组。 步骤五,在“权限”下,对每个要允许或拒绝的权限,选中“允许”或“拒绝”复选框。 同时,还可以通过向权限列表中添加/删除用户或组,审核注册表项的活动,取得注册表项的所有权等方法来维护注册表的安全性。
12.4 注册表使用实例(1) 12.4.1 正确使用注册表 在 Windows Server 2003 中,系统配置信息集存储在注册表中。但对注册表的错误编辑却可能造成操作系统瘫痪。下面对安全使用注册表和注册表编辑器给出一些建议。 1.在更改注册表之前,首先建立注册表备份副本。同时,为了排除故障,保留对注册表所作更改的列表。 2.不要使用其他版本的 Windows 操作系统的注册表来替换 Windows Server 2003的注册表。 3.谨慎编辑注册表。编辑注册表不当可能会严重损坏系统。 4.不要让注册表编辑器在无人参与的状态下运行。 5.不要让过多的用户有权访问注册表。
12.4 注册表使用实例(2) 6.除非必要,否则不要以 Administrator 身份运行注册表编辑器。 12.4 注册表使用实例(2) 6.除非必要,否则不要以 Administrator 身份运行注册表编辑器。 如果恶意用户以 Administrator 身份取得对注册表编辑器的访问权,可能会对操作系统和软件造成严重破坏。只有在查看或更改注册表项别无他法时,才能以 Administrator 身份运行注册表编辑器。 7.不要使用能够模拟多个用户的服务对 HKEY_CURRENT_USER 或 HKEY_CLASSES_ROOT 进行访问。
12.4.2 注册表修改实例(1) 1.让Windows 启动时自动执行某一程序 路径:HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\Windows\CurrentVersion\Run 键值名称:新建主键,名字自己定义。 键值:其值为“要执行文件的路径及文件名” 2.查找系统的安装注册码 路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion 键值名称:ProductKey 键值:其值为系统安装时必不可少的注册码。
12.4.2 注册表修改实例(2) 3.删除自动执行的Windows程序 路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 键值:找到你要删除的程序,选择"删除"。 4.清理软件删除后的遗留信息 路径:HEKY_CURRENT_USER\software 键值名称:查找相应软件信息 键值:其值为删除子项或键指
12.4.2 注册表修改实例(3) 5.隐藏桌面上的所有图标 路径:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Policies\Explorer 键值名称:新建"NoDesktop" 数据类型:DWORD 键值:其值为1表示生效,即隐藏桌面上的所有图标;若为0,则相反。
本章小结 本章主要介绍了注册表的作用、结构、子目录树等,以及使用注册表编辑器管理注册表的方法。介绍了注册表的各个子目录树包括的一些主要内容。最后给出了安全注册表的修改、导入和到出等使用方法,以及使用编辑注册表满足用户特殊需求的实例。