Windows倒下了,DOS顶上

专题快递

终于有一天,我的Windows系统进不去了,虽然所有硬件方面的原因都已经排除,可开机时不是提示注册表出错无法恢复,就是提示说某个系统文件丢失,反正不管什么原因,光标就是停留在初始化画面那儿,就是进不去,真是着急呀。
按照前面文章中解决软件故障的大致思路,我们就来实战一番吧。不过,笔者事先要说明一点,由于已经无法进入Windows系统,因此下面的所有操作都只能在DOS下进行。

一、DOS的基础知识

首先,笔者要在这里介绍一些DOS的基础知识,这样可以帮助朋友们更好地理解DOS的操作方法。

1.启动DOS

如何才能进入DOS界面呢?很简单,你必须将DOS操作系统从硬盘或软盘上调入内存,这个硬盘或软盘被称为“系统盘”,并完成系统的初始化,直到出现“C:\>_”或“A:\>_”后才算启动结束(见(图1)),这里有“C:\>”或“A:\>”叫做“命令提示符”,后面那根不断闪烁的“_”称为光标。不过,现在很少有朋友会在硬盘上安装DOS操作系统,因此我们一般都是通过软盘进入DOS界面,也就是大家熟悉的Windows 9x/Me启动盘啦。

图1
图1

2.DOS的操作方式

如果你想执行程序的话,鼠标已经无能为力,我们只能在“C:\>_”或“A:\>_”这些字符的后面手工键入有关命令才能让系统执行操作,也就是说必须通过键盘向计算机发出指示,这些指示就是所谓的DOS命令。
例如,如果你想看一看当前系统时间的话,在光标后键入“TIME”命令即可(当然不要忘记回车,否则DOS会一直在等待),键入“VER”可以查看当前操作系统的版本,但遗憾的是你只能同时键入一条命令,没办法啦,谁叫DOS是单任务操作系统呢。

3.常用的DOS命令

DOS的命令有很多,但可以划分为内部命令和外部命令两大类,前者是由常驻内存部分处理的命令,只要启动DOS,任何时候都可以使用这些命令;而外部命令是由暂驻内存部分处理的命令,这种命令的处理程序以*.com和*.exe的形式单独存放在磁盘上。
下面,笔者就简单介绍一些常用的DOS命令:
(1)常用的内部命令
DIR 列出所有文件(含子目录)清单,DOS中最常用的命令之一。
MD(MKDIR) 建立子目录(这里的目录相当于Windows中的文件夹)
RD(RMDIR) 删除子目录,但必须先删除其中的文件。
CD(CHDIR) 切换当前目录
TYPE 显示文件内容,当然只能是文本文件或ASCII码文件,你要别奢求显示WORD或WPS格式的文件呀。
DEL(ERASE) 删除文件
REN 重新命名文件
COPY 拷贝文件
TIME 查看或调整时间
DATE 查看或调整系统日期
VER 查看操作系统版本号
(2)常用的外部命令
FDISK 磁盘分区
FORMAT 磁盘高级格式化
DELTREE 删除目录下所有文件(包括子目录和目录本身),这一招可以删除那些隐藏的遇毒文件或木马程序。
SYS 传送系统隐含文件,可以将启动盘上的系统文件传送到C盘上,但要求版本相同,否则更糟。
DISKCOPY 复制整张软盘
DISKCOMP 比较两张软盘
CHKDSK 检验磁盘状态
BACKUP 备份磁盘文件
RESTORE 恢复备份的文件
COMMAND 加载命令处理程序
DEBUG DOS 调试程序
EXTRACT CAB文件解压缩
SMARTDRV 磁盘高速缓冲程序,当你想在DOS下安装操作系统或写入注册表时,请别忘记这一命令。

二、恢复丢失的系统文件

当某个系统文件丢失,Windows虽有提示信息,你却无从找起。如果你还能进入Windows,当然可以通过“系统文件检查器”(sfc.exe)从安装光盘中提取需要的系统文件,但现在就只能从DOS下想办法了。

1.EXTRACT.EXE

微软的Windows安装光盘中多是以CAB格式存储文件,我们可以利用EXTRACT.EXE这个外部命令从安装光盘中恢复丢失的系统文件,从超级启动盘中可以找到该命令,或者从\Windows\Command下找到。
例如,你想从WIN_15.CAB压缩包中恢复SFC.DLL这个文件,只需键入“EXTRACT/Y F:\Win9x\WIN_15.CAB SFC.DLL”命令即可(这里的F:代表Windows安装光盘所在盘符)。不过,如果你不知道cdfs.vxd文件的准确位置时,可以先使用EXTRACT/D F:\Win9x\WIN_*.CAB(这里的*是代表CAB文件包的数字)对每个CAB文件进行检查有无SFC.DLL这个文件,使用起来稍麻烦一些。
下面,笔者将EXTRACT.EXT命令的所有使用参数列表说明如下:

2.EXT.EXE

刚才已经提到,如果我们不知道丢失的系统文件的准确位置,使用EXTRACT.EXE在各个压缩包中进行查找将是一件很麻烦的事,这时就需要用到EXT.EXE这个命令了。
下面,我们仍旧以提取SFC.DLL文件为例说明EXT.EXE命令的使用方法:
第一步:将EXT.EXE命令解压出来
这里,笔者要先提醒一下,因为EXT.EXE命令处于EBD.CAB压缩包中,我们无法直接调用,必须先使用EXTRACT/Y EBD.CAB EXT.EXE命令将EBD.CAB压缩包中的EXT.EXE解压到相应目录中才可以使用,现在你知道启动盘中EBD.CAB压缩包的作用了吧?。
第二步:在安装光盘中搜索文件所在的路径
现在,我们可以键入EXT.EXE命令在安装光盘中搜索SFC.DLL文件所在的具体路径,当出现“Please enter the path windows CAB files(a:)_”提示信息时,你需要键入Windows 安装光盘所在路径,例如“F:\Win9x”,回车后出现“Please enter the name(s)of the file(s)you want to extract :”时,再键入需要搜索的文件名(此处即“SFC.DLL”)。
第三步:确定文件释放的路径
紧接下来的“Please enter the path fo extract do("enter"for current directory):”是要求我们输入待解压文件释放的路径,随便键入一个路径即可,例如这里输入C:\Windows\Temp,再次回车后会出现如下的确认信息:
The options you entered were :
--------------------------
Source Path:F:\Win9x
File(s) to extract:SFC.DLL
Destination Path:C:\Windows\Temp
Is this okay?(y/n):
键入“Y”后,EXT命令就很快开始工作了,它不仅可以找到文件的详细位置,而且可以自动将文件解压后释放到指定路径下,速度极快。

三、修复损坏的注册表

Windows的帮助信息中有这样一段话:“如果不是绝对必要,请不要编辑注册表。如果注册表中出现错误,计算机将无法正常运行……”,它绝不是危言耸听,如果注册表损坏,轻者导致系统不稳、错误频频,严重时甚至会无法启动。因此,掌握受损注册表恢复的技巧,对DIYer来说,是一个非常实用的技巧。
如果还能进入Windows的图形界面,那么恢复注册表应当说是一件比较简单的事,只要从注册表编辑器中执行“注册表/导入注册表文件”命令,将以前备份的注册表文件导入即可。但我们这里讨论的是无法启动的情况,此时只能在DOS下手工修改损坏的注册表啦!

1.曾经对注册表进行过备份

如果你以前曾经对注册表进行过备份,那么就有福啦,执行“regedit /c c:\windows\temp\wzj0310.reg”命令即可使用wzj0310.reg文件中的内容重新建立注册表,导入之前请事先运行smartdrv.exe命令,否则需要的时间将会相当之长。另外,/c参数可是一个危险选项,它会导入指定注册表文件的全部内容,重新创建一个完整的注册表,因此在导入之前请事先备份好当前注册表文件。

2.事先未曾备份过注册表

想必你也和我一样是个马大哈,哪里有什么备份注册表的习惯呢。这里,我们可以试一试下面几种方法:
第一种方法:利用scanreg.exe工具
其实,这里的scanreg.exe实际上就是Windows中的“注册表检查程序”,它不过是在DOS模式下运行而已,当然它的功能较之注册表检查程序又强大了许多。
即使由于种种原因无法进入Windows系统,我们仍旧可以利用scanreg.exe命令对注册表进行各种操作,比较实用的参数当然就是/restore啦。如(图2)所示,执行后会显示当前备份文件的列表窗口,从中选取某一个文件后(当然要选取一个系统正常时备份的注册表啦,可以参考这里的日期,如果这里显示为“Started”则说明该注册表文件能够成功启动Windows,也就是说它是一个完好的备份文件,如果显示为“NotStarted”可不要选择哟),按下“Restore…”按钮,注册表就可以自动恢复到选定的日期,而且速度还行挺快的呢!

图2
图2

一般情况下,Windows会在每天首次成功启动后将注册表备份为一个扩展名为.cab的压缩文件,默认共有5个备份文件,路径位于c:\windows\sysbckup文件夹下。假如你觉得仅有5个备份文件的话还不保险,可以修改scanreg.ini文件,找到“MaxBackupCopies=5”字符串,将其键值由5更改为希望的数值即可,最大可以修改为99。
第二种方法:手工恢复注册表
很不幸,虽然进入了DOS模式,但scanreg.exe命令竟然无法使用(或者该文件已损坏),只能手工恢复注册表啦。其具体操作如下:
cd windows
attrib -s -h -r system.dat(去除system.dat文件的系统、隐含、只读属性)
ren system.dat system.txt(将system.dat文件改名备份)
然后,重新启动系统,由于此时系统无法找到system.dat文件,会自动将system.da0文件更名为system.dat使用,如果你运气好的话,估计应该可以修复受损的注册表了。不过,假如这一招并不能解决问题,那么可以使用系统第一次成功运行时的备份文件system.1st来试一试,具体步骤如下:
cd windows
attrib -s -h -r system.dat
ren system.dat system.txt
attrib -s -h -r system.1st
copy system.1st c:\windows\system.dat
attrib +s +h +r syste.dat
第三种方法:重新安装系统
可能有的朋友会骂我,这算什么好招呀,重新安装系统,这谁不会,还用得你来多说?其实不然,笔者这里所指的“重新安装系统”并不需要真的重新安装系统,因为Windows在安装时会自动检查系统(其中也包括注册表),如果发现错误会自动修复,那就达到了我们的目的了。
当然,如果这一招仍旧无效,那可真的要重新彻底安装系统了。

四、安装操作系统的技巧

当无法进入Windows图形界面时,我们可能不得不在DOS下安装操作系统(主板不支持光盘启动,或者安装光盘不带启动功能),这时候,可要好好看一看下面的几招了:
第一招:将BIOS中的系统引导顺序设置为软盘启动
第二招:用软盘启动时加载光驱驱动程序
这非常简单,使用Windows 98启动盘,在出现启动菜单时,选择第二项“Start computer with CD-ROM support”即可((图3))。

图3
图3

第三招:安装操作系统前先加载磁盘高速缓冲程序
这一招可特别好使,如果在安装操作系统前你未曾加载smartdrv.exe这个磁盘高速缓冲程序的话,所需要的安装时间会大大增加哟。如果是Windows 9x/Me可能还好一些,假如是Windows 2000/XP,你可能会无可忍受!
不过smartdrv.exe程序在创建启动盘时并未自动加载,你必须从其他地方拷贝一个或者可在C:\windows\下找到,然后将之拷贝到启动盘中即可。