正在使用的文件如何删除?

来源:百度文库 编辑:神马文学网 时间:2024/05/01 20:55:03
怎么才能把那些系统正在使用的文件删除呢?除了进入dos删除外还有没有更加方便省事的呢?
其实,除了可以在dos下执行删除命令外,还是可以在windows中删除它们的。具体说来就是用wininit.ini文件。
用过windows 9x的人都见过如下的提示信息:
please wait while setup updates your configuration files.
this may take a few minutes……
这是安装完某个软件或者硬件的驱动程序,应安装程序的要求重新启动windows后的正常现象,这时windows在干什么呢?实际上它在执行wininit.ini给出的指令。wininit.ini是一个鲜为人知的文件,主要用于删除、更名和更新在windows运行时不能被施以这些操作的文件,它存在的时间很短,所以显得有点神秘。
众所周知,在windows中,一个可执行文件如果正在运行,或者某个库文件(*.dll、*.vxd、*.sys等),正在被打开使用,则它不能被改写或删除。例如,你不可能在资源管理器中删除windowsexplorer.exe,而在windows的gdi界面下,有一些文件一直处于这种状态下,除explorer.exe外,还有显示驱动程序库文件,文件子系统库文件等也是这样。如果要对这些文件进行升级,改动,就必须在windows保护模式核心启动前进行,于是windows就提供了基于wininit.ini文件的一个机制来完成这个任务。这个机制是,要删除或改写这类文件的应用程序按一定的格式把命令写入wininit.ini。
windows在重启时,将在windows目录下搜索wininit.ini文件,如果找到,就遵照该文件指令删除、改名、更新文件,完成任务后,将删除wininit.ini文件本身,继续启动过程。所以wininit.ini文件中的指令只会被执行一次。
用wininit.ini文件删除文件其格式为:
[rename]
filename1=filename2
……
虽然名为“rename”,却可实现删除、改名、更新文件的功能。行“filename1=filename2”相当于依次执行“copy filename2 filename1”及“del filename2”这两个dos命令。没有用过dos的朋友可能不知道这两条命令的含义,下面来简单解释一下。命令copy filename2 filename1的意思是复制“filename2”文件,并将新文件命名为filename1;命令del filename2的意思是删除filename2文件。
启动时,windows将用filename2覆盖filename1,再删除filename2,这就实现了用filename2与更新filename1的目的,如果filename1不存在,实际结果是将filename2改名为filename1;如果要删除文件,可令filename1为nul,例如,打开记事本,输入下面的内容:
[rename]
nul=path ilename
……
其中[rename]在wininit.ini中可以起到删除和更名文件的作用:“nul”表示是删除文件,“=”后面的部分为你希望删除的文件的完整路径名,要注意的是应该使用文件的短文件名(即“c:program files”应该写为“c:progra~1”)。这是因为wininit.ini文件的处理是在windows文件系统调入前,所以不支持长文件名。
下面看一个完整的例子。假设我们想删除c:windows文件夹下的记事本程序notepad.exe,可以这样做,打开记事本,输入下面的内容:
[rename]
nul=c:windows otepad.exe
将编辑好的文件另存为wininit.ini文件,保存在windows系统目录中。重新启动windows,在重启的过程中,你的记事本程序和wininit.ini文件本身将被删除。另外,如果要删除的是文件夹,用“dirnul”代替“nul”就可以了,注意,“dir”与“nul”之间没有空格,切记切记。
再举个例子,假如你要删除windows emp文件夹,就可以这样做,打开记事本,将下面的内容另存为wininit.ini文件,仍然要保存在windows系统目录中,重启电脑再次进入windows中,你会发现temp文件夹已经被删除了。
[rename]
dirnul=c:windows emp