帝王谥号都有哪些:12、DOS下维护注册表的高级技巧

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 07:51:34
12、DOS下维护注册表的高级技巧

现在随着电脑应用知识的普及,我想,很多朋友对WINDOWS注册表的修改已经有不少经验和心得。在图形界面下对注册表的维护和修改,就不必再提了,但有时候,我们可能会遇到更辣手的事情,如由于人为错误操作或者恶性病毒感染而使系统切底崩溃,不能进入WINDOWS图形界面时,我们对此是否只有重装这种方法呢?本文将就在DOS下面尽量挽救系统这方面作出阐述。

一、 使用scanreg/restore
  我想这种方法大家也比较熟悉了,只要在DOS界面下输入该命令,就可以在最近的5个注册表备份里恢复,如果幸运的话,系统就可以马上恢复。但,事实上,用这种方法有个致命的缺陷就是你只有最近5天的注册表备份可以选择。因为控制着自动备份的scanreg.exe只会在每天第一次启动电脑时备份,如果哪天你安装的程序或者对注册表的修改比较多,那么你的努力就大多白费了。这种方法就正如是眉毛胡子一起抓,正确和错误的都一起改掉,是否能为恢复系统帮上忙,总有一种听天由命的感觉。所以,笔者鼓励大家使用第二种方法。

二、使用DOS界面的regedit.exe
  如果把scanreg/restore比作是一刀切的话,这种方法更像是一次高明的外科手术,只一矢中的地针对病,把错误修复而完全不影响注册表的其他健康部分。这样,我们就能在最大限度上保留我们的工作成果了。使用regedit.exe对注册表实行局部修改的思路是:首先,把注册表里有嫌疑的分支导出;然后,使用edit对它进行分析和修改;最后,把健康的分支重新导入注册表里。好了,我们来看看整个过程的具体操作。

1 导出注册表分支
  在DOS下导出注册表分支的命令格式是:

Regedit[/L:system][/R:user] /E filename [regpath1]。

/L:system是指定system.dat的路径,/R:user是指定 user.dat的路径,如果不说明,系统就会在默认的路径下找;/E:是导出注册表分支的文件名,regpath1是要导出的注册表分支。比如,我们要导出默认注册表关于控制系统启动的分支到test.reg里,命令如下:regedit /e test.reg HKEY-LOCAL-MACHINE \Software\Microsoft\Windows\CurrentVersion\Run。

2 对注册表进行分析、修改
  在DOS下面只要运行edit就能对*.reg文件进行编辑了,因为我们导出的注册表实际上就是文本文件。不过,要正确找出引起错误的地方并修改,需要我们平时对注册表积累的经验。

下面,我们看一下它的基本结构,以使我们在对它的修改时可以有的放矢。我们知道,注册表里面有6个主分支,其中容易引起致命错误而使WINDOWS不能正常启动的分支有: [HKEY_LOCAL_MACHINE],记录着本地机器的硬件配置以及安装的相应软件,特别是 [HKEY-LOCAL-MACHINE\Enum\PCI]这个分支下面的主键值,一旦出错,WINDOWS往往不能启动。如[HKEY-LOCAL- MACHINE\Enum\PCI
\VEN_8086&DEV-7111&SUBSYS_00000000&REV-01\BUS_00&DEV_07&FUNC-01]记录的是硬盘控制器的详细信息,下面的Logconfig记录着它的各种参数;[HKEY_LOCAL-MACHINE\Enum
\PCI\VEN-1002&DEV-4C42&SUBSYS_4C421071&REV-DC000800]记录的则是显示卡的重要资料和参数,一旦这里出错,往往会导致WINDOWS在启动时黑屏,然后死掉。

  另外还有[HKEY-LOCAL-MACHINE\Software\Microsoft
\Windows\CurrentVersion]里记录着WINDOWS当前版本的信息以及启动时执行的程序等,这是病毒最爱攻击和修改的地方。

  至于还有[HKEY-CLASS-ROOT]是记录文件种类及其关联信息的,[HKEY-CURRENT-USER]里记录着当前用户的各种信息,包括登陆的密码和各方面的设置等,这些一般不会引起WINDOWS的致命错误,这里也不再详细分析了。

  当我们对这些键值分析和修改时,如果碰到什么不清处的地方,可以通过第1点的导出注册表方法,把一些备份注册表的相应分支导出,进行比较。 WINDOWS的注册表备份都放在C:\windows\sysbackup里面,如我们要导出第一个注册表备份的 [HKEY_LOCAL_MACHINE]分支,那么我们可以先进入该目录,然后键入命令:extract /e rb000.cab *.*,先把 system.dat和user.dat解压出来,再键入命令:regedit /L:system.dat /R: user.dat /e backup.reg HKEY-LOCAL-MACHINE。 笔者在这里提醒一下,这是一个很好的解决问题的方法,再用上一些文件比较软件可以很快的找出错误的,请诸位慢慢体会。

3 把修改好的注册表分支重新导入
  命令的格式为:regedit /L:system /R:user file1.reg file2.reg。我们一般都要修改默认的注册表文件,所以在实际使用中只需键入:regedit file1.reg就行了。
  
  好了,讲了这么久,我们看看一个具体的案例。

  学院机房里的一台机器在重新启动后,无论用正常模式或者安全模式都不能进入WINDOWS界面,表现为启动过程中硬盘突然不读。用SCANDISK检查过硬盘,并没有发现问题。在启动过程中选择生成BOOTLOG.TXT文件,发现启动到硬盘控制器后就断掉了。本来想用scanreg/restore 恢复备份的注册表,可是该机器为了加快启动,并没有自动备份。

于是,用regedit把[HKEY-LOCAL-MACHINE\Enum\PCI]分支导出,键入:regedit /e hdc.reg HKEY-LOCAL-MACHINE\Enum\PCI;接着用EDIT查看关于硬盘控制器的部分,发现有"ChannelOptions"=hex:00,问题到这里终于发现了,原来是有人把IDE控制器设置成不使用,造成在加载硬盘控制器后,系统不能访问硬盘,所以把它改为:hex:02;再键入命令:regedit hdc.reg,把修改后的信息导入。重新启动机器,一切正常运行了。

  这样,在不损坏任何数据的情况下,就把问题解决了。希望这个例子能给大家带来这种DOS下维护注册表技巧的启发,毕竟,我们硬盘上面有很多都是无价的数据。
13、在DOS下使用注册表扫描程序

从windows98之后,windows系统加入了对注册表的管理程序,该程序有两个版本,scanregw.exe工作在windows环境中, Scanreg.exe工作在dos环境.并用一个Scanreg.ini文件与之辅助.介绍该程序For windows版本的文章很多,朋友们可以自己查找参阅.这里仅介绍如何在dos下使用Scanreg.exe程序.

  由于程序是在dos模式下工作.因此,尽管你的操作系统是中文版的windows,这时出现的也是英文字符界面.程序操作是由命令行和一些选项开关组成.命令只有一个Scanreg,后面是/,之后就是所谓的开关了.如果你键入:Scanreg/?,会出现简单的帮助信息.其具体分析如下:

  Scanreg/backup 备份注册表的命令.这个命令执行后开始备份注册表,速度很快,备份结束出现dos默认的提示符号.

  Scanreg/restore 它执行后,系统会列出所备份的注册表文件,至于能列出多少个备份文件,与scanreg.ini文件中的设置有关,一般默认是5个备份文件.每个文件后面都有备份的日期.移动光条,选择一个,执行restore就可以回复选定的注册表.

  Scanreg /fix 注册表有问题时可以用这个来修复,修复时间较长,也许是我的机器很长时间没有进行过注册表修复操作,我在自己的机器上(P166MMX超频到187MHz,32M内存)执行这个命令后,用了十多分钟,其间有进度条指示修复完成的情况.

  Scanreg /comment=<"comment"> 这是备份注释文件的命令. 可以将该文件备份为cab格式,由于cab格式是对文件进行压缩后备份的,利用这一点也可以将别的什么文件备份为cab格式.可以减少磁盘空间的浪费.以后有用得着这个文件的时候,先执行 Scanreg/restore命令,就可以在恢复文件列表中找到它,如果需要,也可以像恢复注册表文件一样进行恢复.

  系统出现问题,多数与注册表有关系,这时如果将注册表恢复到较早的一个,说不定就能解决问题.当你遇到的故障使得系统不能工作在windows模式下时,dos模式下恢复注册表就是唯一的选择了,愿我这里介绍的一点点知识,能在你遇到上述难题时,助你一臂之力.
14、在DOS下解决注册表问题

当您的Windows 95/98因注册表问题而无法启动到图形界面时,您此时只有在DOS下使用一些工具软件修复注册表。Windows 95/98的RegEdit、ScanReg是最合适不过的修复与维护工具软件。
在DOS下使用注册表编辑器。

注册表编辑器Regedit.exe其实是一个双栖型的程序,既可在DOS下运行,也可在Windows 95/98下运行。许多用户可能已经知道在 Windows下使用Regedit 的方法,那么,&127;在DOS下如何使用注册表编辑器呢?

在DOS提示符下键入Regedit命令,将出现一个帮助屏。此屏幕给出了其命令行参数及其使用方法。
语法:
Regedit [/L:system] [/R:user] filename1
Regedit [/L:system] [/R:user] /C filename2
Regedit [/L:system] [/R:user] /E filename3 [regpath]

其中:
/L:system 指定system.dat文件的存放位置。
/L:user 指定user.dat文件的存放位置。
filename1 指定引入注册表数据库的文件名。
/C filename2 指定形成注册表数据库的文件名。
/E filename3 指定导出注册表文件的文件名。

regpath 指定导出注册表文件的开始关键字(缺省为全部关键字)现举几个例子说明regedit.exe在DOS下的使用方法。
【例1】 将系统注册表数据库registry导出到reg1.reg文件中。
regedit /E reg1.reg

【例2】 reg1.reg形成系统注册表数据库registry(全部)中。
regedit /C reg1.reg

【例3】 将reg.dat引入系统注册表数据库中(部分)。
regedit reg.dat

【例4】 将CGJ开始的关键字导出注册表数据库,并命名为cgj.reg。
regedit /E cgj.reg cgj

【例5】 指定system/dat存放在D:\PWIN中和user.dat存放在E:\PWIN中,将reg.dat数据文件形成一个新的注册表数据库registry。
regedit /L:\PWIN /R:E:\PWIN /C reg.dat

下面介绍当您在启动Windows时出现如图1所示的对话框时,使用RegEdit来恢复注册表的方法。

1.首先在安全模式下导出,然后再引入注册表文件

(1) 关闭计算机后,重新启动,在出现“Starting Windows95”或者“Starting Windows98”时,按F8键,在启动菜单中选择“Safe mode command prompt only”,则系统进入安全模式。

(2) 执行如下命令:
regedit /l:c:\windows\system.dat /e c:\system.txt (导出注册表)
cd\windows (Windows95/98系统目录)
attrib -s -h -r system.dat(去掉SYSTEM.DAT的系统、隐含、只读属性)
ren system.dat system.old (将当前的SYSTEM.DAT文件改名)
regedit /l:c:\windows\system.dat /c c:\system.txt (引入注册表)

(3) 重新启动计算机,以正常方式启动Windows 95/98系统,如果错误仍出现,可以在安全模式下使用如下命令:
regedit /l:c:\windows\user.dat /e c:\user.txt (导出注册表)
cd\windows
attrib -s -h -r user.dat(去掉USER.DAT的系统、隐含、只读属性)
ren user.dat user.old (将当前的USER.DAT文件改名)
regedit /l:c:\windows\user.dat /c c:\user.txt (引入注册表)

2.重新启动计算机,以正常方式启动Windows95/98系统,如果错误仍出现,可以恢复系统至最后一次成功运行时的注册表。
(1) 关闭计算机后,重新启动,进入安全模式。
(2) 执行如下的命令:
cd\windows
attrib -s -h -r system.dat
ren system.dat system.bad
(3) 重新启动Windows95系统,在启动时,系统如果没有发现system.dat文件,就会使用System.da0文件,系统会自动将System.da0文件改名为system.dat。

3.如果仍有启动错误出现,则恢复系统至第一次成功运行时的注册表。
(1)在关闭计算机后,重新启动,进入安全模式。
(2) 执行如下命令:
cd\windows
attrib -s -h -r system.dat
ren system.dat system.***
cd attrib -s -h -r system.1st (此文件在启动盘的根目录下,通常在C:\)
copy system.lst c:\windows\system.dat(使用system.lst替代system.dat)
attrib +s +h +r system.lst (加上属性)
4.重新启动Windows95系统,如果仍有错误发生,再重新安装Windows95/98系统。

在DOS下使用ScanReg

在DOS下执行ScanReg/?命令,则出现一个帮助信息屏。该屏幕将给出ScanReg的使用方法:

ScanReg /[Option]

其中Option可为?(获取帮助信息)、BACKUP(备份注册表)、RESTORE(恢复注册表)、FIX(修复注册表)、COMMENT(将说明信息加入到备份注册表文件.CAB中)。

例如:
1.在DOS下执行ScanReg /BACKUP,则将注册表备份到.CAB文件中。
2.执行ScanReg /FIX,则修复注册表中的错误。
3.执行ScanReg /RESTORE,则将注册表恢复过来。
15、管理Win9X注册表

1.注册表的备份及恢复
  注册表被破坏时就会导致系统发生问题甚至瘫痪,所以需要备份注册表以便在注册表受到破坏时恢复它。常见的注册表备份方法有三种:

  (1) 直接将注册表文件System.dat和User.dat拷贝到硬盘指定的目录下或直接拷贝到软盘上作为备份。恢复时将该备份替换覆盖回原处即可。

  (2) 运行Regedit.exe。打开注册表编辑器后,利用菜单的“导出”及“引入”功能来备份、恢复注册表信息。具体方法为:打开“注册表”下拉菜单,单击“导出注册表文件”项,在出现的对话框中键入欲备份注册表的文件名及其保存位置,再单击“保存”即可。需要恢复注册表时,用同样的方法打开注册表编辑器,打开“注册表”下拉菜单后点击“引入注册表文件”,在出现的对话框中选中需恢复的备份文件,再按“打开”按钮即可将该注册表备份文件恢复到系统中。

  (3)Win98新增的自动备份注册表功能可自动备份注册表。在用户每天第一次开机时,Win98将自动把系统中原来的注册表信息压缩成.cab文件,以rb00*.cab之名存放在Windows\Sysbackup目录下,系统自动保存最近五次开机时的注册表数据。需要恢复时,可以用 Windows自带的Extract.exe(在Windows\Command目录下)解开该压缩文件,恢复替换回原注册表文件即可。另外,还可用 WinZip7.0等压缩软件解开所需的rb00*.cab备份压缩文件,将它覆盖回原位置即可。

  2.修改注册表
  为了充分发挥系统的性能,有必要对注册表进行适当的修改(但是,如果你对注册表不太熟悉的话,请不要轻易修改它)。例如,通过修改注册表可以加快网络传输速度。具体操作如下:运行Windows目录下的Regedit.exe,出现编辑窗口时单击“编辑”菜单的“查找”命令,在查找框内键入 “MaxMTU”后回车,找到该键值名后,右击它,在快捷菜单中单击“修改”,将其值设为576;用同样的方法将该窗口的“MaxMSS”值设为536;将“DefaultRcv Windows”的值设为3216;将“Default TTL”的值设为64。如果该窗口中缺少某一项,就右击窗口右边空白处,在快捷菜单中单击“新建/字符串值”,键入相应的名字,再将其值设为上面数据即可。关于注册表更详细的修改方法见《1999年电脑报合订本》(上)附录。

  3.对Win95/97注册表的管理
  目前很多系统仍使用Win95/97,但它对系统没什么保护功能。在Win98中,微软新增了一个注册表检测软件:ScanReg。当注册表出现问题时,它会提示你重新启动系统恢复注册表。目前注册表检测软件分为DOS版的ScanReg.exe和Windows版的ScanRegw.exe,只要输入ScanReg,系统就启动相应版本,对注册表进行压缩备份,并将备份存放在Windows\Sysbackup目录下,当注册表出错时,就使用备份文件覆盖掉坏注册表文件。把Win98的ScanReg拷贝到Win95/97中使用仍可以实现对系统注册表的保护。具体方法为:把Win98的 Windows\Command目录下的ScanReg.exe和Windows目录下的ScanReg.ini、ScanRegw.exe拷贝到 Win95/97的相应目录中。为了达到每次启动Win95/97就检测和自动保存,我们要做一个快捷方式到“启动组”中,在“开始”按钮上单击鼠标右键,选择“打开”,一层层打开到“启动组”文件夹,把刚才做好的ScanReg快捷方式放进去,这样,Win95/97就和Win98的注册表保护功能完全一样。

  4.用软件管理注册表
  现在有很多用于管理注册表的软件,例如:注册表修改软件Reg2000;注册表监视软件Regmon;注册表清理软件Regclean等。下面以微软公司开发的Regclean为例说明用软件对注册表的管理。在频繁的安装和卸载一些软件时,注册表中会留下许多垃圾信息,你可以通过运行Regclean 删除这些无用的表项,并把所做的修改存放在一个Undo文件中,用户可随时恢复。经过Regclean的处理,系统性能得到很大的提升,尤其是缩短了系统的启动时间。而且只要系统一启动,Regclean就会搜索注册表,如果发现错误,只要按一下FixError就大功告成了。Regclean清理注册表后,会产生一个*.reg文件,里面的内容是刚被清理出的注册表项,可以用各种字处理软件打开查看,但请注意:不能直接选“打开”(即:把它们加入注册表),否则这些垃圾信息就会重新登录到注册表中,刚才的FixError工作就白做了。
16、WIN98注册表编辑器的常用操作

注册表编辑器是一个可以让你改变系统注册设定的高级工具WIN98注册表编辑器的常用操作注册表编辑器是一个可以让你改变系统注册设定的高级工具,有经验的Windows用户可以通过编辑注册表改变系统设定。
  启动注册表编辑器的方法是执行Windows文件夹下的REGEDIT.EXE。如果注册表中有错误,计算机可能不能正常运行。如果发生这种情况,可以将注册表信息恢复到上次启动计算机时的状态。下面详细介绍Win98注册表编辑器常用的操作。

  一、恢复注册表
  1.单击“开始”,再单击“关闭系统”;
  2.单击“重新启动计算机并切换到MS-DOS方式”,然后单击“是”;
  3.进入Windows目录下。例如,如果你的Windows安装在C:\Windows目录下,应键入以下内容CD C:\WINDOWS后回车;
  4.在MS-DOS模式下键入
C:\WINDOWS\COMMAND\SCANREG\RESTORE后回车。
  按照上述步骤,可以将注册表恢复到最后一次启动计算机时的状态。

  二、将注册表中的所有内容导出到一个文本文件中
  1.在注册表编辑器中单击“我的电脑”将导出所有注册表信息,或者单击一个文件夹仅仅导出该文件夹下内容的注册信息;
  2.在“注册表”菜单上单击“导出注册表文件”;
  3.单击“浏览”为导出的文件寻找一个存储位置,即文件夹,然后为之输入一个文件后保存。
  这样导出的注册表信息文件,可以在任何一种文本编辑器中编辑。

  三、导入或局部导入注册表
  1.在“注册表”菜单中,单击“导入注册表文件”;
  2.单击“浏览”找到要导入的文件,然后单击“打开”。

  四、添加主键
  1.打开注册表列表,找到要添加主键的文件夹;
  2.右击要加入主键的文件夹;
  3.将鼠标指向“编辑”菜单下的“新建”,然后单击“主键”;
  4.新的主键是以一个临时名字显示的,为新的主键输入一个名字,然后回车即可;如果添加新的主键后,导致了计算机不能正确启动的情况,可以恢复注册表信息。

  五、添加键值
  1.打开注册表列表,选中要添加新键值的文件夹;
  2.右击要添加新键值的文件夹;
  3.将鼠标指向“新建”,然后单击需要添加键值的类型。这些类型包括“字符串值”、“二进制值”和“DWORD”值;
  4.新添加的键值以一个临时键值显示,为新添加的键值输入一个新的值,然后回车即可。
17、注册表完全恢复手册

注册表是伴随着Win95出现在我们面前的,其实它早就在NT中担当起了重要的作用。采用注册表来管理系统配置,主要是为了提高系统的稳定性。而系统出现的一些问题(如无法启动、应用程序无法运行、系统工作不正常等),很多都是因注册表出现错误而造成的,通过修改相应的错误数据就能使得Windows工作如初了。但注册表的结构太复杂,不正确的修改常常会带来更坏的结果。下面介绍几种安全恢复注册表的方法,希望能帮助大家远离令人头疼的注册表问题。

未 雨 绸 缪 篇
Win9X系列操作系统的注册表,实际上是一个数据库,它以分层结构存储着整个计算机的系统配置以及大量应用程序的安装使用时要调用的各种信息等。它由3个相对独立的注册表文件组成;

系统配置注册表文件:system.dat、用户平台配置注册表文件user.dat和网络管理注册表文件config.pol。它们存储在 Windows目录中,其中system.dat中存储着当前计算机的配置,特别是各种即插即用设备的硬件配置,如设备的I/O地址、中断号(IRQ)以及DMA的值等;

user.dat主要用来定义用户的优先权,存储着特定于某一用户的应用程序的安装信息等;

而config.pol则是只有当Win98的用户安装了系统策略编辑器后才会生成的注册表文件,它存储的设置可以对网络用户的操作做出限制。一般而言,组成一个完整的注册表文件系统,system.dat和user.dat这两个文件是必不可少的。

一、文件备份还原法
显然,及时、正确的备份能够在计算机发生意外时,比较完全地恢复整个工作进程。对注册表进行的备份也一样,利用在正常工作状态下备份的注册表可以用来恢复发生错误的注册表,从而达到使系统重新恢复正常工作的目的。

(一)备份
1、简单拷贝法
备份注册表就是备份system.dat和user.dat这两个文件。它们的文件属性都是系统、隐藏、只读的,因此一般情况下无论在DOS还是Windows窗口状态都是不可见的,在备份时要注意使用一些“技术”。

在DOS状态下,请先进入Windows目录,然后键入命令“Attrib -h -r -s system.dat”,对于user.dat同样操作,此时就可以将这两个文件复制到其他的目录中去了。在Windows窗口状态下,在【查看】中选择【文件夹选项】→【查看】,在【隐藏文件】中选择【显示所有文件】,这样system.dat和user.dat才能在文件夹窗口中显示出来。剩下的复制工作应该就不用我多说了吧。

2、注册表导出法
将注册表导出,也是一种不错的注册表备份方法。在【开始】→【运行】栏中运行【Regedit.exe】,选【注册表】→【导出注册表】,最后选择导出注册表文件的存储位置就可以了。要注意的,在导出注册表时,千万要在【导出范围】中选择【全部】,否则导出的注册表文件不完全,将无法用来恢复原注册表。采用此方法备份后只生成一个文件,它的文件名的后缀是.reg。

(二)还原
1、简单拷贝法的还原
还原的方法当然是重新用备份的文件覆盖现有文件。不过要注意的是,在覆盖现有文件前,同样得先将system.dat和user.dat的文件属性全部取消,否则系统会拒绝覆盖操作。在还原前请务必启动到DOS状态下,然后再进行此操作。千万不要在Windows或Windows的DOS窗口下进行此还原操作,否则不但不能恢复注册表,反而会对注册表产生极大的破坏。

2、注册表导出法的还原
利用注册表导出法的注册表文件还原系统时,既可以在Windows下进行,也可以在DOS下进行。
在Windows下进行时,运行注册表后选【注册表】→【导入注册表】,选择要导入注册表文件的所在位置,重新启动后就可以恢复注册表。虽然此法无论在安全模式还是正常方式下都可以进行,但为了保险起见,笔者还是建议最好在安全模式下或是干脆用下面介绍的在DOS下进行操作。

在DOS下只能以命令行的方式运行Regedit.exe,但它可以解决无法进入Windows情况下的注册表恢复问题。其命令行形式:

 Regedit [/L: system] [/R: user] filename1
 Regedit [/L: system] [/R: user] /C filename2
 Regedit [/L: system] [/R: user] /E filename3 regpath1
 Regedit [/L: system] [/R: user] /D regpath2

参数含义:
/L: system 指定system.dat文件的存放位置;
/R: user 指定user.dat文件的存放位置;
filename1 指定导入的注册表数据库文件名;
/C filename2 利用指定的注册表文件重新生成注册表;
/E filename3 导出注册表文件为指定文件名;
regpath1 将指定开始关键字的部分从注册表文件中导出;
/D regpath2 将指定开始关键字的部分从注册表文件中删除

  具体在恢复注册表时,可以采取命令行1的形式:Regedit bak.reg(假设你导出的备份注册表文件为此文件名)。

不过建议采用命令行2的形式,即:Regedit /C bak.reg,因为此命令不但会将bak.reg中的所有信息导入注册表,而且会将其中的一些无用的信息(如一些已经被删除的程序在注册表中的残留部分关键字等)同时剔除,从而达到压缩重建注册表的目的。

顺便提一下,命令行2也不一定要在恢复注册表才使用,平时运行也能压缩、清除注册表中的“垃圾”,从而起到提高Windows启动速度,减少注册表错误发生几率的作用。笔者就曾经利用此命令将原来6兆的注册表压缩为4兆。要注意的是,在使用此命令时,请务必在运行前加载磁盘缓冲smartdrv,否则它的运行时间之长或许足够你去看一场电影了!

二、系统备份法
正是由于注册表对于系统的重要性,微软在开发Win95时就考虑到系统对于注册表的自动备份问题。尽管它所提供的功能直到Win98才令人稍感满意,但毕竟这也不失为修复注册表的方法之一。

(一)Windows 95
当初Win95各版本中提供的系统自动备份注册表的方法比较简单,通常是在Windows系统启动的同时,将当前的注册表文件备份。具体的做法就是将system.dat和user.dat这两个文件分别备份为相同属性的system.da0和user.da0。因此,当系统因注册表遭破坏无法启动时,可以手工将system.da0和user.da0这两个文件拷贝并覆盖system.dat和user.dat(请注意在操作前,分别将这4个文件的文件属性全部取消)。尽管这种想法不错,但由于疏忽和一些无法预料情况的发生,系统自动备份的注册表经常会在不知不觉中被破坏或备份失败。例如:

①当注册表的破坏是在上次关机以前发生的,而当你再次启动系统时,备份的注册表其实就是已经遭破坏的注册表的“完全”拷贝了;

②启动时注册表为正确的,此时系统自动备份的注册表也是好的,但在系统启动过程中发生意外(如突然停电、硬盘意外读写错误等)导致系统启动失败,当你再次启动时,原来完整的注册表备份也会被已经遭破坏的注册表覆盖。因此,利用system.da0和user.da0这两个备份文件来恢复注册表的效果不是十分令人满意,成功率一般在50%左右。要注意在一次启动失败后,尽量不要试图再次启动,应该立即用system.da0和user.da0这两个文件来覆盖恢复,否则90%以上你的系统是再也无法恢复的了。

(二)Windows 98
Win98对注册表文件备份系统的改进之处主要体现在以下两个方面:①备份文件不仅包括system.dat和user.dat,还包括了 system.ini和win.ini这两个初始化文件,大大提高了系统还原的完整性;②备份文件被统一地压缩在一个文件中,而且备份压缩文件的数量大大增加,避免了在Win95下一个备份容易发生错误无法恢复的现象。

Win98将注册表的备份文件放在了Windows下面的隐藏子目录Sysbckup中,备份文件以rbX为名,都是CAB格式的压缩文件,每个文件包含 system.dat、user.dat、system.ini和win.ini。默认情况下,系统共留有5个(X从000到004,如果某次有错误,数字往后顺延)压缩包备份,这5个压缩包备份分别是你最近5个工作日中第一次启动计算机时系统所做的备份。请注意,并不是最近5次,举个例子,如果你每天都使用计算机,那么这5个备份中保存的分别是5天来每天你第一次启动计算机时的注册表文件。当某次启动发生错误时,系统会将这时的注册表文件另外保存为 rbbad.cab,以供使用者分析、寻找发生错误的原因所在。

了解了Win98的备份原理后,对于注册表的还原就比较轻松了。如果你可以进入Windows(哪怕是安全模式),想进行备份还原的话,只要用 Winzip等支持CAB压缩格式的软件选择最近的或是前几天的备份压缩包文件,并将其中的4个文件解压出来,重新启动计算机到DOS状态,利用这些文件覆盖相应同名文件就可以了。如果你在启动的时候就无法进入Windows的话,那么可以尝试在DOS下进行备份还原工作:

①利用Windows提供的extract.exe文件,用命令行方式将备份文件展开,直接对系统注册表文件进行覆盖还原(假设当前目录为Windows):extract /Y. Sysbckup\ rbX.cab,其中X为000~004。

②利用Windows附带的scanreg.exe,在DOS状态下运行此程序,按提示选择检查注册表,在程序检查完注册表后,可以看到【Create Backups】和【View Backups】这两项,前者用来将当前的注册表备份下来,后者用来查看以前备份的注册表情况。选择后者,屏幕将显示近日来的各备份注册表文件情况(主要是备份的时间),选择你想还原的备份,按回车,然后选择【Restore】开始还原,还原完毕后选择【Restart】重新启动计算机就可以了。

注意,当你第一次启动计算机失败后,请不要不断地继续尝试启动计算机,因为scanreg.exe会将启动失败的注册表都一一依次备份下来,如果你连续启动失败5次的话,也就意味着原先备份的5个完好的注册表都将被这连续5次的坏注册表所替代,也就失去了利用它们来还原系统注册表的机会。因此,在启动失败后,请尽量不要一而再再而三地连续启动,应及时地进行注册表还原工作。

亡羊补牢篇
古人云:亡羊补牢,为时未晚。如果你从来就没有备份注册表的习惯,或是在Windows下所有的系统自动备份都已经如前所述被已遭破坏的注册表文件所替代了的话,那么试试下面的方法,或许能使你的机器再次正常地运转起来。

一、保守还原法
一般而言,当Win9X在成功安装完毕后,会自动将第一次正常运行时的系统信息(其实也就是注册表信息,主要是相应的硬件信息)保存在C盘根目录下的system.1st这个文件中。利用它,有可能将系统恢复到最初安装时的状态。具体的做法如下:在DOS下,首先去除system.1st以及 Windows目录下system.dat的文件属性(它们都是系统、只读、隐藏属性),然后将system. 1st拷贝为system.dat来覆盖系统的system.dat,最后重新启动计算机。如果启动成功,还得对系统进行大幅度地调整才能恢复到破坏前的状态。