注册表学习系统

摘抄:http://blog.163.com/sbtaot/blog/static/128303760200982022345333/

1.什么是注册表

对Windows操作系统稍有了解的用户都听说过注册表,听说过修改注册表的神奇功用,你知道什么是注册表吗?

注册表并不神秘,简单地说,它是用来对Windows操作系统进行配置的一个工具。通过它,可以对操作系统及应用软件进行优化,可以自己设置Windows的使用权限,可以解决硬件及网络设置不当带来的故障,甚至可以改造自己的操作系统。

1.1.2 为什么需要注册表

在Windows 3.X时代,主要通过Win.ini及System.ini文件对Windows系统进行配置,但Win.ini及System.ini文件存在着安全性不高、大小受限制等问题,为了解决这一问题,Microsoft公司(Windows系统的开发者)在Windows 98以后的版本中引入了注册表这一概念,以便更好的对Windows系统进行配置,这就是为什么我们要使用注册表。

1.1.3 注册表的作用和功能

注册表是保存程序所需要的信息,当程序需要这些信息时,就从注册表里读出。因此,注册表最基本的功能就是保存信息。

当了解了注册表的主要功能——保存信息后,再来了解其保存信息所能发挥的作用!

(1)记录安装信息;

(2)设置硬件;

(3)定制Windows以及应用软件。

1.1.4 注册表的逻辑结构体系

注册表逻辑结构中最基本的是主键、子键、键值项以及键值。它们是按照分级的方式来管理和组织的。首先是最底层的根键,每个根键下有若干个子键,每个子键下又可以有若干(一个或多个)子键,子键下可以有一个或多个键值项和键值(如图所示)。

根键:注册表中最底层的键,类似于磁盘上的根目录。

子键:子键位于根键下,又可以嵌套于其他子键中。在注册表的六大根键中,有若干的子键,而每个子键中又可以嵌套成千上万的子键。

键值项与键值:在每个根键和子键下,可以有若干键值项和键值,这种结构类似于磁盘上根目录和子目录里的文件和文件内容。

注册表逻辑结构体系

1.1.5 认识注册表的六大根键

Windows 9X注册表逻辑结构中包含六个根键,每个根键包含着分类不同的信息!在Windows NT/2000/XP中,如果用Windows自带的编辑器打开的时候,只能看到五个,还有一个隐藏的根键:HKEY_PERFOR-MANCE_DA<wbr>TA。

注册表的六大根键

HKEY_CLASS_ROOT

记录Windows操作系统中所有数据文件的格式和关联信息,主要记录不同文件的文件名后缀和与之对应的应用程序。其下子键可分为两类:一类是已经注册的各类文件的扩展名,这类子键前面都有一个“.”;另一类是各类文件类型有关信息。

HKEY_CURRENT_USER

此根键包含了当前登录用户的用户配置文件信息。这些信息保证不同的用户登录计算机时,使用自己的个性化设置,例如自己定义的墙纸、自己的收件箱、自己的安全访问权限等。

HKEY_LOCAL_MACHINE

此根键包含了当前计算机的配置数据,包括所安装的硬件以及软件的设置。这些信息是为所有的用户登录系统服务的。它是整个注册表中最庞大也是最重要的根键!

HKEY_USERS根键

HKEY_USERS根键包括默认用户的信息(Default子键)和所有以前登录用户的信息。

HKEY_CURRENT_CONFIG

此根键实际上是HKDY_LOCAL_MACHINE中的一部分,其中存放的是计算机当前设置,如显示器、打印机等外设的设置信息等。它的子键与HKDY_LOCAL_MACHINE\Config\0001分支下的数据完全一样。

HKEY_DYN_DA<wbr>TA根键

HKEY_DYN_DA<wbr>TA根键中保存每次系统启动时,创建的系统配置和当前性能信息。这个根键只存在于Windows 9x中。

HKEY_PERFORMANCE_DA<wbr>TA根键

在Windows NT/2000/XP注册表中虽然没有HKEY_DYN_DA<wbr>TA键,但是它却隐藏了一个名为“HKEY_PERFORMANCE_DA<wbr>TA”的键。所有系统中的动态信息都是存放在此子键中。系统自带的注册表编辑器无法看到此键,但可以用专门的程序来查看此键,比如使用性能监视器。

1.2 轻松学用注册表编辑器

1.2.1 认识注册表编辑器

使用注册表编辑器——Regedit,可以查看和修改注册表的逻辑结构,学习注册表最主要的也就是掌握和操作它的逻辑结构。

要运行注册表编辑器,只要打开“开始/运行”,在对话框中输入Regedit并确定就可以启动注册表编辑器了。

这个工具在以后会经常用到,总是像这样运行有点麻烦,所以为了方便,你可以在桌面做一个快捷方式。

特别提醒:注册表编辑器是个危险的程序,如果计算机不是一个人使用的话,最好不要将它的快捷方式做到桌面上,防止一些用户运行注册表编辑器后对注册表进行破坏性的修改。

1.2.2 运行注册表编辑器(从Windows 9x到Windows XP)

在Windows 9x里面打开注册表编辑器的方法只有一种,在“开始/运行”中输入Regedit就可以了。

在Windows NT/2000/XP里面有2种方法可以打开注册表编辑器。一种是直接在“开始/运行”中输入Regedit,出现的界面和Windows 9x一样。另外一种是打开有权限限制的注册表编辑器(打开方法:在“开始/运行”中输入Regedt32),后面的文章中将有详细讲述。

特别提示:与此书配套使用的光盘中有多个注册表修改的多媒体演示实例,初学者注意参看。

1.2.3 注册表编辑器的视窗结构

下图显示了注册表编辑器的视窗结构,它具备许多Windows 98一般应用程序的特性:顶部是菜单栏,底部是状态栏(显示当前活动子键的整个注册表路径),以及协助上下左右移动的滚动条。

注册表编辑器视窗分成两格:左边的键格窗口以资源管理器的形式显示注册表数据库的层次,右边的键值窗口显示当前被选中的子键的内容。

每个子键下都包含特殊的键值,出现在右边的键值窗口内(如下图)。每个值都包含有:

(1)数据类型图标。它以不同类型图标的方式显示出该键值的数据类型(如下图所示)。

注册表编辑器的视窗结构

(2)键值项。如上图中所示的“username”,它标识该键值的项目名称。

(3)键值。如上图中的“Solon”,是该键值项的具体的值。

每个子键至少包含一个键值项——默认键值项,如果该键值项的键值为空,它的键值会显示成“(未设置键值)”(如上图所示)。

键值有三种数据类型:字符串、二进制和DWORD。字符串类型(键值窗口中含字母“ab”的小图标,如上图所示)通常用于文本,而二进制及DWORD类型(键值窗口含有1和0的小图标)通常用于数字信息。但是,字符串值也可以包含数字,而且这种情况很常见。

备注:子键名不是注册表独有的,而且同一子键名可能出现在几个不同的地方。因此在本书中描述某一子键时,通常给出完整的位置,如HKEY_CLASSES_ROOT\Folder或HKEY_LOCAL_ MACHINE\Software\Classes\Folder。

1.2.4 怎样修改注册表键值

对注册表进行的大部分修改和编辑都是对已有键值项或键值进行的修改。注册表编辑器使这项工作变得非常简单。基本方法是在左边的键格窗口中搜索,直到找出要修改的键值所属的键。双击某个键值项会弹出修改对话框,根据所选键值项的数据类型,会弹出“编辑字符串值”、“编辑二进制值”和“编辑DWORD值(Wind-ows NT/2000下为“编辑双字节值”)”等各类键值的对话框,在对话框中编辑所需要的内容,最后单击“确定”即可。

1.2.5 如何创建新的子键和键值项

创建子键的方法很简单,首先在左边的键格窗口中右击相应的子键;然后再从弹出的快捷菜单中选择“新建/主键”(如下图),并在“新数值 #1”(Windows NT/2000/XP下为“新项 #1”)字样上键入子键名即可。

创建新的键值项与创建子键差不多一样容易,只是事先必须多了解一些信息。除键值项名称外,还必须确定该键值项应该属什么类型(字符串、二进制或DWORD)以及它必须包含什么数据。

给注册表添加子键和键值项,不像修改已有子键和键值那样常见,但偶尔还是要进行这类操作的。有时是根据自己的意图添加,不影响Windows系统。不过要注意无论添加何种键和值,都必须满足Windows 以及应用程序的格式要求。同样,在添加新条目之前,要备份注册表,以便在出现问题后恢复到正常时的状态。

创建新的子键和键值项

1.2.6 如何删除子键和键值项

注册表编辑器可以删除任何子键(不包括六个根键,实际上根键是无法删除的)或任何类型的键值项。只要选择一个对象(一个子键或者键值项,如果是键值项,可以一次选中多个),将其右击,然后选择“删除”(也可以用Delete键的办法),如图,在确认对话框中必须选择“是”,才能完成删除,因此如果是意外地或匆忙之中选择了“删除”,选择“否”,退出这个对话框就行了。

删除子键和键值项

如果删除了注册表中的一个子键,同时也就删除了该子键内所包含的所有子键以及所有键值项。因此,在删除注册表子键或键值项之前,最好利用注册表编辑器的“导出注册表文件”功能将其保存下来。如果删除该子键或键值后几天一切都运行正常,再将导出的文件删除,而如果出现问题,那么再将此文件引入,使之恢复到删除前的状态即可。

1.2.7 快速查找子键、键值项和键值

从注册表编辑器菜单中选择“编辑/查找”(也可以按Ctrl+F或F3,这样会更快),注册表编辑器将弹出“查找”对话框如图。可以在“查找目标”中键入要查找的内容,并通过在“查看”区选择相应的复选框来告诉注册表编辑器去哪儿寻找内容。

如果知道要查找的数据是子键、键值项或是键值数据,可以不选其他两个复选框以加快搜索的速度,不过一般不建议这么做。当今的硬件上速度差别并不是很大,这样做却有可能错过很多的重要的搜索结果。

如果想找到一个字符串片段,但又不记得整个字符串,那么不要选“只匹配整个字符串”复选框。

单击“查找下一个”按钮开始搜索。注册表编辑器找到一个相配的目标后,它在键和值窗格中都会显示相应的条目。如果怀疑有多个相配的目标,敲F3(“查看下一处”)键继续搜索。如果注册表编辑器再也找不到目标了,或从一开始就没有找到目标,它会显示一个对话框,告诉搜索注册表结束。

查找子键、键值项和键值

1.2.8 用Regedt32编辑注册表

前面已经讲过在Windows NT/2000里面,打开有权限限制的注册表用Regedit32,而用Regedt32编辑注册表与Regedit略有不同:

(1)不能右击某个值并选择“修改”,因为Regedt32压根就不支持鼠标右击功能。

(2)在对Regedt32中的注册表值进行修改之前,必须登记注册,获得必要的权限,这意味着只有“管理员”或相当的角色才能完全修改注册表。

(3)双击键值窗口中的键值项,就会打开该数据类型相应的键值编辑器对话框。这是修改注册表数据的最快及最安全的方法,也是推荐给大家的方法。不能单击一个键值并选择“编辑/修改”,是因为“编辑”菜单上没有该选项。必须从“编辑”菜单上选择一个数据类型,要求编辑一个值时必须知道它的数据类型。

(4)Regedt32有一个Regedit没有的编辑器:多字符串编辑器。有些注册表值有多个字符串,注册表将其作为一个值对待。例如要修改REG_MULTI_SZ类型的值,双击该值,在多字符串编辑器中进行修改,与在Notepad这样的文本编辑器中进行的修改一样。

(5)修改子键和键值项的名称时,用Regedt32还没有Regedit方便。Regedt32没有“重命名”命令,因此必须手工删除旧的,然后创建一个新的。

下面再来看一看它的具体编辑操作(只列出与Regedit不同部分):

● 添加及删除子键和键值项

因为不支持鼠标右击功能,所以用Regedt32添加子键和键值项远不如用Regedit方便。在Regedt32中,你必须单击相应子键,选择“编辑”菜单中的“添加项”(实际就是添加子键),弹出对话框后,才可以指定子键名以及该子键的缺省数据类型(任选)。

在Regedt32中添加键值项的过程和添加子键的操作差不多。选择相应子键,然后选择“编辑”菜单中的“添加数据”(实际就是添加键值项),在对话框中赋予新建值项一个名称和数据类型,单击“确定”,在随后出现的编辑器对话框中输入键值。

要在Regedt32中删除子键和值,只需将某个子键或键值项选定,然后敲Delete键(或选择“编辑”菜单中的“删除”)。Regedt32不支持像Regedit那样能一次删除多个键值项,而如果你要删除多个键值项,就只能一个接一个地删了。

在Regedit32中必须获得安全许可才能删除注册表内容。这就意味着你必须以管理员身份登录。而且必须撤消选定“选项”菜单中的“只读模式”复选框。

● 查找注册表

Regedt32的搜索特性比Regedit要差得多,因为它不能查找键值项或键值,而只能查找子键。下面是另外几处值得注意的差别:

·“搜索”处在“查看”菜单里,而不是Regedit和大多数别的Windows程序中那样存放在“编辑”菜单中。

·Regedt32另加了一个“区分大小写”选项,规定准确的大写或小写匹配(该选项可能永远都用不上)。

·还有一个选项是从当前子键往下或往上搜索(Regedit默认总是往下搜索)

·Ctrl+F和F3查找快捷键在Regedt32中不起作用。

·Regedt32不能查找用键值项或键值指定的文字,这是经常要用到Regedit的主要原因,即使Microsoft宣称Regedt32是更好的工具。

备注:Regedt32不允许紧接着HKEY_USER或HKEY_LOCAL _MACHINE根键下面添加一个子键。必须使用“注册表”菜单中的“加载配置单元”命令才能在根键下直接添加子键,这样做的目的是为了检查别人的注册表。

1.2.9 不一样的Windows XP注册表编辑器

在早期的Windows NT/2000中,注册表编辑器程序通常有两个:Regedit和Regedt32。Regedt32起源于Windows NT早期版本,而Regedit起源于Windows 9x产品系列。这两个程序显而易见的不同之处证明它们分属不同的系列,它们是由不同的人员在不同的时候设计的,功能也各不相同。

种种的相互之间的差异与区别,使用户感到将它们的特性合成一个统一的工具将会是更方便!Microsoft的承诺也终于在Windows XP版本考虑并将两个编辑器合并在一起,使得他们的之间的强大功能和特性得以完美的结合。

下面就让我们来看一看结合后的注册表编辑器都有那些新特性:

● 使用较新的Windows 9X/ME用户界面,而不是使用较早的Windows 3.x用户界面,与Windows NT 3.5/4.0的注册表编辑器--Regedt 32也完全不一样。

● 可搜索子键、键值项、键值的名称和内容,而不是Regedt32那样只能搜索子键。

● 在一个完整的窗口中显示注册表的全部内容,而不是像Regedt32那样对每一根键显示各自的窗口。

● 可以导出、引入文本格式的.reg及其他更多格式文件,而不像Regedt32那样可以导出但不能引入文本格式的文件,且和.reg文件格式完全不一样。

● 支持访问权限控制安全特性。

● 支持全部注册表数据类型(字符串、二进制、DWORD、多字符串、可扩展字符串、资源描述符等)

● 可以以二进制位数据方式显示、编辑键值,大大提高了方便性。

● 具有“记忆”功能,每次重新启动Regedt时,它会自动跳转到上次使用时最后打开的位置。

● 具有收藏夹功能,方便访问、管理最常用的注册表编辑项目。

Regedit 32注册表编辑器具有收藏夹功能

● 可以导出更多格式文件

当然,新的Regedit也少了一些功能,比如不提供以前Regedt32有的“只读”模式和引入/导出二进制格式文件等特性,但总的来说,集成后的注册表编辑器更加灵活好用,为编辑注册表、配置系统、排除故障提供了便利。

1.3 注册表备份与恢复

1.3.1 用注册表编辑器导出和引入注册表文件

用注册表编辑器将一个注册表的部分或整个内容导出,就是在磁盘上创建一个带.reg后缀的文本文件。该文本文件包含指定子键的全部内容,包括该键下的子键,以及包含这些键中的所有相关的键值项和键值(原有信息仍留在注册表内)。

导出的.reg文件可以在任何文本编辑器(如记事本程序Notepad.exe等)或字处理器中查看并编辑,还可以双击某个.reg文件将其内容合并(引入)到当前注册表中。

因此,导出注册表文件,是在修改某个子键之前将其备份所普遍采用的一个好办法。当然,导出整个注册表要花较长的时间,特别是当注册表中所保存的信息特别多的时候尤为明显,所以用这种方法备份整个注册表数据库,并不是最方便和省时的方法。

导出某个注册表子键内容到文件的具体步骤:

(1)在键格窗口中,单击要导出的子键,然后选择“注册表”菜单中的“导出注册表文件”命令。

(2)在弹出的“导出注册表文件”对话框中,为导出的文件找一个保存的文件夹并起一个容易分辨的文件名。

(3)在“导出范围”选项框中记得选择“所选分支”单选按钮(只有在需要导出整个注册表时才选择“全部”单选按钮)。

(4)最后单击“保存”按钮,注册表编辑器开始将注册表导出到指定的.reg文件中。

注册表导出

从.reg文件引入的过程与导出也差不多。从菜单栏选择“注册表/引入注册表文件”,并且在“引入注册表文件”对话框中确定你要引入的.reg文件。

另一种办法是打开“资源管理器”,找到要引入的.reg文件,并双击它(或右击该文件并从快捷菜单中选择“合并”)。

备注:引入.reg文件可以创建新注册表条目(子键、键值项和键值)并修改现有条目。即使你要引入的.reg文件会改写已有的值,注册表编辑器也不会出示警告,所以在引入.reg文件之前,切记备份注册表。

1.3.2 用Regedt32导出和导入注册表

在导出和导入数据方面,Regedt32与Regedit有一些很大的区别:

● 尽管可以通过选择“注册表”菜单中的“将子目录树另存为”命令将注册表的一部分作为文本文件保存(导出),但该程序却不能从文本文件恢复(导入)注册表数据。还有,该命令不能创建.reg文件。所以该命令的用处并不大。

● Regedt32“注册表”菜单中的“保存项”和“还原”命令使用二进制文件格式保存并恢复注册表数据,与Regedit用的文本.reg文件相比,这种格式压缩得更多。

● 用“注册表”菜单中的“还原”命令恢复Regedt32中的一个子键时,该程序不象Regedit那样进行合并,而是将该键及其内容整个取代。因此核实一下恢复的地点是否正确是很重要的。另外,通过单击需要恢复的键,然后才真正选择“还原”命令。

● Regedt32有Regedit不提供的“加载配置单元”和“卸载配置单元”两个命令,它们主要用于修理别人的注册表(或是本机曾经导出的注册表文件)。

备注:加载配置单元时,必须将它装入HKEY_USER或HKEY_ LOCAL_MACHINE窗口。如果打开的是其他窗口,Regedt32将把“加载配置单元”菜单选项变成灰色,表示它并不支持这一功能。

1.3.3 用“导出/导入注册表”帮助应用程序移位

WPS2000是国内最好的文字处理软件,在默认情况下,它会被安装在C:\Program files\WPS2000文件夹下,由于经常访问WPS2000文件夹,所以要是能把WPS2000文件夹移到C:\WPS2000就会方便多了。

如果单纯的把WPS2000文件夹从C:\Program files文件夹下移动到C:\下,双击WPS文档,将无法运行WPS2000来打开文档,因为在注册表中还保存着以前的设置,认为WPS2000仍然在C:\Pro-gram files文件夹下。所以必须把在注册表中的信息进行修改,才能使程序继续正常运行。

利用注册表编辑器的“查找”功能可以找到这些在注册表中的注册信息,并一一更改。但由于这些注册信息过多,用手工“查找”和修改方法实在是太麻烦,所以能有“查找且替换”功能就方便多了。

注册表编辑器中,虽然提供了“查找”功能,但却没有“替换”功能,多少有点美中不足!不过我们可以另辟蹊径,利用注册表编辑器的“导出注册表”功能,将注册表导出为.reg文件,然后再用其他字处理编辑器的强大编辑功能进行查找和替换操作,最后再利用注册表编辑器的“引入注册表”功能将修改后的.reg文件引入到注册表中!这样就可以间接地完成“查找与替换”操作。

这种方法还可以应用在其他应用程序软件上。不过需要注意的是,一些系统级的程序,最好不要这样做,因为他们不但在注册表中注册了他们的安装路径信息,还有可能在其他地方有这些信息(比如在INI文件中)。

这里举的仅仅是一个应用实例,而在实际操作中,应用这种方法,完全可以弥补注册表编辑器中没有“查找&替换”命令所带来的不足。

备注:进行了这些操作后,程序将无法正常卸栽,只有手工卸栽了。

1.3.4 在MS-DOS命令行模式下导出注册表文件

注册表编辑器不仅可以在Windows界面下运行视窗模式,还可以在MS-DOS(不是在Windows下运行的MS-DOS模式)命令行模式下运行!不过此时的注册表编辑器实际仅具备从注册表文件引入和导出注册表文件的功能,而没有Windows界面下的注册表编辑功能。

MS-DOS下的注册表编辑器具有它的独到之处,首先,当系统出现问题而无法启动Windows系统时,它可以使用以前备份的.reg文件重建注册表,使之恢复正常。另外就是通过引入.reg文件来“压缩”注册表。

在MS-DOS命令行模式下导出注册表文件的命令格式为:

Regedit [/L:system] [/R:user] /E file.reg [Regpath1]

/L:system是指定System.dat文件所在的路径。

/R:user是指定User.dat文件所在的路径。

如果没有/L和/R参数,注册表编辑器就会在默认的路径下(比如C:\Windows)找这两个文件。

/E:此参数告诉注册表编辑器要进行导出注册表操作。在此参数后面,应该空一格,输入导出注册表的文件名。

可选项[Regpath]是指定要导出哪个注册表的分支,如果不指定[Regpath]选项,那么则导出全部注册表分支。

例如,我们要将保存在C:\Windows\System.dat和保存在C:\Windows\Profiles\User.dat中的关于控制Windows 98启动项目的分支导出到test.reg里,命令如下:

Regedit /L:C:\Windows\ /R:C:\Windows\Profiles\ /e test.reg HKEY_ LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\Run

而要直接导出在默认路径里的System.dat和User.dat所包含的所有的注册表内容,那么用Regedit /e All.reg命令就可以了。

备注:这里应该特别注意的是/L:system和/R:user参数为可选项。如果不选,那么注册表编辑器认为是对Windows 98目录下的System.dat和User.dat进行操作。

1.3.5 在MS-DOS命令行模式下引入注册表文件

MS-DOS下注册表编辑器的这个功能,与Windows下的注册表编辑器的“引入注册表”是完全一样的。它可以将指定的.reg文件中的注册表内容导入,并新建或覆盖这些导入的子键分支、键值项和键值。

在MS-DOS命令行模式下的命令格式为:

Regedit [/L:system] [/R:user] file.reg

/L:system是指定System.dat文件所在的路径。

/R:user是指定User.dat文件所在的路径。

引入注册表仅需要指定被引入的.reg文件的路径和名称就可以了,而不需要象“/E”、“/C”这样的参数。

例如,我们要将test.reg文件中的部分注册表内容,引入到C:\Windows\System.dat和保存在C:\Windows\Profiles\User.dat中,命令可以如下:

Regedit /L:C:\Windows\ /R:C:\Windows\Profiles\ test.reg

而要将test.reg文件中的注册表内容直接引入到默认路径里的System.dat和User.dat文件中,那么用Regedit test.reg命令就可以了。

1.3.6 在MS-DOS命令行模式下重建注册表

此命令是MS-DOS环境下的注册表编辑器所特有的功能。它将用指定的.reg文件中的内容,重新建立整个注册表,即重新建立System.dat和User.dat文件。

在MS-DOS命令行模式下的命令格式为:

Regedit /L:system /R:user /C file.reg

/L:system是指定System.dat文件所在的路径。

/R:user是指定User.dat文件所在的路径。

/C:此参数将告诉注册表编辑器,用所指定的.reg文件中的内容,重建注册表。

例如,我们要用test.reg文件中的注册表内容,重新建立整个注册表,并将其保存到C:\Windows\System.dat和C:\Windows\Profiles\ User.dat中,命令可以如下:

Regedit /L:C:\Windows\ /R:C:\Windows\Profiles\ /C test.reg

备注:/C选项将引入.reg文件中的全部内容,从头开始创建一个全新的注册表。

在这里应该特别注意,所指定的.reg文件应该包含整个注册表的全部内容。因为注册表编辑器并不检查指定的.reg文件中是否包括了整个注册表的内容。另外在重建注册表命令之前,一定要备份整个注册表,以防出现错误而造成损失。

1.3.7 在MS-DOS命令行模式下删除注册表分支

此命令可以将注册表中的一个子键分支删除。

它在MS-DOS命令行模式下的命令格式为:

Regedit /L:system /R:user /D REGPATH

/L:system是指定System.dat文件所在的路径。

/R:user是指定User.dat文件所在的路径。

/D:此参数将告诉注册表编辑器,将REGPATH所指定的注册表子键分支删除。

例如,我们要将注册表中关于控制Windows 98启动项目的分支删除,命令可以如下:

Regedit /L:C:\Windows\ /R:C:\Windows\Profiles\ /D HKEY_ LOCAL_MACHINE\Software\Microsoft\Windows\ CurrentVersion\Run

备注:此命令将删除指定子键下所包含的所有内容。(包括所有子键、键值项和键值)

1.3.8 在MS-DOS环境下“拯救”注册表

人为误操作或者恶性病毒感染而使系统彻底崩溃,不能进入Windows 98图形界面时,难道只有重装Windows 98这一种方法呢?

实际上这些故障很多都可以通过注册表得以解决,这就需要灵活地运用注册表编辑器在MS-DOS环境下面特殊的功能。而且,利用这种方法,仅仅是对错误的部分进行局部恢复,所以对数据和配置的破坏,都是最小的。

使用注册表编辑器对注册表实行局部修改和修复的思路是:

(1)导出注册表分支。把注册表里有嫌疑的分支导出到.reg文件。

(2)使用edit(DOS下的实用编辑程序)或者其他字处理程序对.reg文件进行错误分析和修改编辑。

(3)最后,把修改后的.reg文件重新引入注册表里。

下面通过讲述一个具体的例子来说明此方法的具体操作。

(1)导出注册表分支

一台机器在重新启动后,无论用正常模式还是安全模式都不能进入Windows 98界面,具体表现为启动过程中硬盘突然不读;用SCANDISK检查硬盘,并没有发现问题。在启动过程中选择生成BOOTLOG.TXT文件,发现启动到硬盘控制器后,就停止响应了。

本来想用Scanreg /restore恢复备份的注册表,可是该机器为了加快启动,并没有自动备份。所以现在只能通过注册表编辑器来完成这一“拯救”使命了。

由注册表的结构知识可以得知,关于硬盘控制器的设置被保存在注册表中的HKEY_LOCAL_MACHINE\ Enum\PCI子键下,所以用注册表编辑器将此子键导出。具体的命令为:Regedit /e hd.reg HKEY_LOCAL_ MACHINE\Enum\PCI。

(2)对注册表进行分析、修改

在MS-DOS下面运行edit对导出的.reg文件进行编辑。

为了能解决问题,我们需要正确找出引起错误的地方并修改。我们知道注册表里面容易引起致命错误而使Windows 98不能正常启动的分支是:HKEY_LOCAL_MACHINE根键,它记录着本地机器的硬件配置以及安装的相应软件。比如HKEY_LOCAL_MA-CHINE\Enum\PCI\VEN106&DEV_0571&SUBSYS_ 05711106&REV_ 06\BUS_00&DEV_07&FUNC_01子键下记录的是硬盘控制器的详细信息,下面的Logconfig子键记录着它的各种参数;HKEY_LOCAL_ MACHINE\Enum\PCI\VEN0DE&DEV_ 0028&SUBSYS134107D& REV5\000800记录的则是显示卡的重要资料和参数。一旦这些注册表信息出错或被破坏,往往会导致Windows 98无法启动和正常运行。

当我们导出了注册表分支并对其进行了问题分析后,就可以用EDIT等编辑软件对.reg文件进行编辑和修改了。现在用EDIT打开在第一步里导出的.reg文件,并查看关于硬盘控制器的部分,发现有“ChannelOptions”=hex:00,问题到这里终于发现了,原来是IDE控制器被设置成禁用了,造成在加载硬盘控制器后,系统不能访问硬盘,所以应把它改为:hex:02。修改完成后保存.reg文件。

(3)重新引入正常的注册表分支

hd.reg文件修改正确后,就可以将它重新引入注册表了,这一步的操作是直接在DOS命令提示符状态下键入命令:Regedit hd.reg就可以了。

通过以上的操作并重新启动机器后,一切都恢复正常了。这样,在不损坏任何其他数据的情况下,就把问题解决了。

备注:以上列举的的HKEY_LOCAL_MACHINE\Enum\PCI\ VEN106&DEV_0571&SUBSYS_05711106&REV_06\BUS_00&DEV_ 07&FUNC_01和HKEY_LOCAL_MACHINE\Enum\PCI\VEN0DE& DEV_0028&SUBSYS134107D&REV5\000800子键下,子键会因为不同的机器配置而有所不同。

1.3.9 使用注册表检查器备份注册表

系统每天第一次正常启动后,注册表检查器会自动备份注册表的全部内容,但你也可以手工运行ScanRegW来强迫扫描和备份注册表。

首先在“开始”菜单中,单击“运行”,在弹出的对话框中输入scanregw.exe并单击“确定”。这样就启动了在Windows下的注册表检查器。

注册表检查器首先检查注册表的结构是否完好。如果注册表的结构没有问题,注册表检查器将提示是否再次备份注册表,如图。如果按“是”,注册表检查器备份注册表并将压缩的.CAB文件保存在C:\Windows\ Sysbackup文件夹中(隐含的文件夹)。

对注册表的备份大部分情况是在Windows 98环境下进行的,但有时也会在MS-DOS环境下进行(比如无法运行Windows 98时),就需要运行注册表检查器专用在MS-DOS下的程序Scanreg了,在MS-DOS命令提示符下输入:Scanreg /backup命令就可以将当前注册表进行备份了。

使用注册表检查器备份注册表

通过以上操作,便完成了对系统注册表的手工备份。当然,这和注册表检查器自动备份的效果是一样的,同样可以用于以后的恢复操作。

1.3.10 使用注册表检查器恢复注册表

如果在启动Windows 98时,注册表检查器检查到注册表的结构有错误,那么它会提示“Windows 在造访注册表时碰到错误,Windows将重新启动并为您修复注册表”的提示。按确定后,注册表检查器会重新启动计算机并使用先前的注册表备份来恢复错误的注册表。

当然,这是在注册表出现问题时,注册表检查器的自动恢复。而如果因为注册表中存在潜在错误(尚能启动,但问题不明显,或是注册表检查器检查不到的错误)时,就得手工恢复了。使用注册表检查器在MS-DOS下的Scanreg.exe程序可以进行手工操作:

(1)将系统重新启动进入MS-DOS模式。

(2)在MS-DOS命令行的模式下,键入scanreg,则弹出程序操作界面。

(3)然后按回车,进入操作界面。这里会显示三个选择按钮,选择“Create Backups”会备份当前注册表,如果希望在MS-DOS下备份注册表,则选择这项。我们现在需要恢复注册表,所以选择“View Backups...”。

(4)接着会弹出如图所示的操作界面。这里会显示备份的文件列表,从列表中选择最近的正确备份,备份压缩的注册表文件按照名字Rbxxx.cab列出。文件显示了备份的时间以及日期,每个CAB文件的后面单词是Started或者是NotStarted。Started表示这个文件能够成功启动Windows 98,是一个正确备份。Not Started表示文件没有被用来启动Windows 98,所以不知道是否是一个正确备份(如下图)。

使用注册表检查器恢复注册表

(5)选择好文件后,按回车键确定。重新启动计算机,注册表恢复正常。

注册表检查器在运行时,还可以带其他参数运行,以完成特定任务。下面列出了全部命令行参数。

/backup:立即备份注册表( 适用于ScanReg以及ScanRegW)

/restore:按照备份的时间以及日期显示所有的备份文件( 仅适用于ScanReg)

/comment:在/restore中显示同备份文件有关的部分 (适用于ScanReg以及ScanRegW)

/fix:修复注册表文件的错误 (仅适用于ScanReg)

/autoscan(/autorun):每次运行Windows 98的时候自动扫描注册表文件并自动在后台备份注册表,但是每天只备份一次 (仅适用于ScanRegW)

1.3.11 Windows 98下用MS Backup备份注册表

Windows 98的通用备份程序Microsoft Backup(简称MS Backup),可以备份整个磁盘驱动器,包括注册表。它可以快速压缩文件,而且如果你用软驱进行备份,可以进行多张软盘备份,以对付一张软盘装不下的大文件(如System.dat)。它还可以备份到多种目标设备,包括Zip、Jaz、可写光盘,磁带驱动器和网络目录等。

MS Backup还对其工作情况作了记录(通常记录在C:\Program Files\Accessories\BACKUP\reports\xxx.txt文件中)。此外,用不着重新启动计算机机就可以使用MS Backup。

(1)先打开“开始菜单/程序/附件/系统工具/备份”,运行该程序。

(2)单击备份选项卡,在该应用程序的主窗口中筹划备份工作。

(3)在左边的“备份内容”选项框中,选择Windows 98的安装的目录,然后在右边的文件列表中选择需要备份的具体文件。例如这里我们可以选择备份的具体文件为:C:\Windows\system.dat、C:\Windows\user.dat、C:\Windows\system.ini、C:\Windows\win.ini、C:\Windows\profiles\solon\user.dat。

(4)在“备份到何处”框内选择存放注册表备份的位置和文件名。例如可以是C:\back_reg.qic(这里的.qic文件扩展名是MS Backup程序的默认扩展名,不可以更改)。

(5)还可以单击“选项”按钮,选择备份的其他选项,它会使备份工作更符合你的具体要求。

(6)所有选项设置好后,按“开始”按钮进行最后的备份,程序将显示备份状态。

备注:用MS Backup备份注册表唯一明显的不足是该程序需要运行Windows 98才能恢复文件。而且在典型的Windows 98安装中,MS Backup程序并不会被安装。因此在使用它之前,请首先运行“控制面板/添加删除程序”程序,并在弹出的对话框中选择“安装Windows组件”选项卡,然后在列表里选择“系统工具/备份”来安装MS Backup程序。

1.3.12 使用MS Backup工具备份Windows NT/2000/XP注册表

作为Windows NT/2000/XP中提供的通用备份程序,MS Backup(ntbackup.exe)可以备份整个磁盘驱动器,而最重要的是,即使注册表文件是打开的并且在“使用中”,MS Backup也能备份注册表。也就是说,即使当COPY、XCOPY及拖放操作无法复制时,MS Backup也能复制注册表文件。

(1)首先打开“开始/程序/附件/系统工具”菜单中的“备份”程序,程序运行后单击“备份”选项卡出现如下图所示的程序界面。

(2)在左边的窗口中选择“系统状态”复选框。

(3)单击C盘旁边的+号,选择Documents and Settings文件夹旁边的复选框。对所有能登录该计算机的人来说,这一文件夹内包含了所有注册表文件:NTUSER.DAT和USRCLASS.DAT的用户指定版本,你可以逐一选择各个用户不同的NTUSER.DAT和USRCLSASS.DAT文件,以将它们列入备份范围。

(4)选择“工具”菜单中的“选项”,显示选项对话框,务必在“常规”选项卡上选择“完成备份后,验证数据”复选框。这样做会增加备份所耗的时间,但却能保证备份与原有文件完全吻合。

使用MS Backup工具备份注册表

(5)在“备份类型”选项卡上,选择“普通”。当然你可以选择不同的备份类型,例如备份整个硬盘时,可选择“增量”或“差异”备份。“普通”适合于进行快速的注册表备份。

(6)在“备份日志”选项卡上,选择“详细数据”。该选项可以让你进一步确认程序成功地备份过哪些具体的文件。

(7)设置完成后确定,返回备份程序主界面。单击下方的“浏览”按钮,选择目标设备和保存的文件名。

(8)单击“开始备份”按钮,会弹出“备份作业信息”对话框,单击“高级”按钮,取消选定标有“自动备份带有系统状态的系统保护文件”的复选框。如果选择了该复选框,则会在备份注册表的同时将整个C:\Winnt下的一些内容备份下来,给整个备份增添大约200兆字节的内容。所以如果仅仅是备份注册表,那么不要选择此选项。

(9)单击“确定”,关闭“高级备份选项”复选框;然后单击“开始备份”按钮。

确定后,程序开始备份,并在结束时可以查看备份状态的报表。

备注:MS Backup需要运行Windows NT/2000/XP才能恢复文件。这就意味着,如果遇到严重故障而无法运行Windows NT/2000/XP时,备份以及更重要的恢复恢复工作将不能进行。

1.3.13 使用MS Backup工具恢复Windows NT/2000/XP注册表

只要能启动Windows 2000,那么就可以用MS Backup来恢复注册表(当然前提是你对注册表作过备份)。下面看看它的具体操作步骤:

(1)首先打开“开始/程序/附件/系统工具”菜单中的“备份”程序,程序运行后单击“还原”选项卡。

(2)单击你以前创建的备份旁边的+号,再选中“系统状态”的复选框(如下图所示)。

使用MS Backup工具恢复

(3)选择“工具”菜单中的“选项”,显示选项对话框。

(4)在“还原”选项卡上选择“无条件替换计算机上的文件”单选框。

(5)在“备份日志”选项卡上,选择“详细数据”。

(6)设置完成后确定,返回程序主界面。并确定“将文件还原到”选择框中的选项是“原位置”。

(7)设置完成后,单击“开始还原”按钮,并确定弹出的“警告”对话框。

(8)继续确定“确认还原”提示框。

(9)在“输入备份文件名”对话框中单击“确定”。最后程序开始还原备份的注册表,完成后程序提示重新启动计算机时按确定。

备注 :MS Backup程序在恢复注册表时,也会除去注册表中一些冗余的空间。这和Windows 98中用Regedit重新创建注册表有异曲同工之处。

1.3.14 Windows 98下用MS Backup恢复注册表备份

(1)首先运行MS Backup程序。

(2)你可以选择“还原向导”,在一步一步提示下还原注册表文件。当然也可以单击恢复选项卡。

(3)在“还原位置”框中,输入要保存的备份文件名,也可以通过“浏览”按钮来选择备份文件。

(4)然后单击“刷新”按钮,在“选择备份集”对话框中选择一个备份,最后确定。

(5)此时会显示所选备份文件中所包含的文件,选择需要还原的文件,最后按“开始”按钮进行还原。

1.3.15 开机自动进入屏幕保护

有时用户希望Windows系统启动成功就进入屏幕保护状态,以便起到一定的安全保护作用。而首选的方法是在桌面上单击鼠标右键进入“显示属性/屏幕保护程序选项卡/密码保护”来设置屏幕保护的密码,然后再到注册表进修改使其能够自动运行,从而有效的保护了系统。

运行注册表编辑器,打开已有的或新键如下操作子键,并根据下表编辑其相应键值项(如果不存在此键值项请新建)。

操作子键:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Run]

键值项(数据类型)
键值(说明)

密码确认 (字符串值)
· "c:\windows\ssstars.scr"(在这里在输入你要启动的屏保的路径)

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 121,993评论 17 134
  • 今天模拟主持抽到了电台 谈初恋,第一反应是,我去,不知道毕竟没有初恋吧。幸而开头说完就考官老师喊停了。虽然没有了解...
    雨后故人阅读 80评论 0 0
  • 从中秋放假回来,一直觉得很压抑。 突然很想打电话,找朋友聊聊,可是才发觉好像找不到人。有那么几个信得过的,可是又觉...
    生生云阅读 324评论 2 0