技巧:如何刪除正在使用的文件?

2010-08-28 10:46:24來(lái)源:西部e網(wǎng)作者:

    刪除文件時(shí),經(jīng)常會(huì)碰到Windows提示“文件正在使用”無(wú)法刪除這樣的提示信息。其實(shí),我們除了可以在DOS下執(zhí)行刪除命令外,還可以在Windows中刪除它們。具體說(shuō)來(lái)就是用Wininit.ini文件。

    一、Wininit.ini文件簡(jiǎn)介
  
用過(guò)Windows 9x的人都見(jiàn)過(guò)如下的提示信息:
Please wait while Setup updates your configuration files.
This may take a few minutes……
這是安裝完某個(gè)軟件或者硬件的驅(qū)動(dòng)程序,應(yīng)安裝程序的要求重新啟動(dòng)Windows后的正,F(xiàn)象,這時(shí)Windows在干什么呢?實(shí)際上它在執(zhí)行Wininit.ini給出的指令。Wininit.ini是一個(gè)鮮為人知的文件,主要用于刪除、更名和更新在Windows運(yùn)行時(shí)不能被施以這些操作的文件,它存在的時(shí)間很短,所以顯得有點(diǎn)神秘。

    二、Wininit文件工作機(jī)理

眾所周知,在Windows中,一個(gè)可執(zhí)行文件如果正在運(yùn)行,或者某個(gè)庫(kù)文件(*.dll、*.vxd、*.sys等),正在被打開(kāi)使用,則它不能被改寫或刪除。例如,你不可能在資源管理器中刪除Windowsexplorer.exe,而在Windows的GDI界面下,有一些文件一直處于這種狀態(tài)下,除explorer.exe外,還有顯示驅(qū)動(dòng)程序庫(kù)文件,文件子系統(tǒng)庫(kù)文件等也是這樣。如果我們要對(duì)這些文件進(jìn)行升級(jí),改動(dòng),就必須在Windows保護(hù)模式核心啟動(dòng)前進(jìn)行,于是Windows就提供了基于Wininit.ini文件的一個(gè)機(jī)制來(lái)完成這個(gè)任務(wù)。這個(gè)機(jī)制是,要?jiǎng)h除或改寫這類文件的應(yīng)用程序按一定的格式把命令寫入Wininit.ini。Windows在重啟時(shí),將在Windows目錄下搜索Wininit.ini文件,如果找到,就遵照該文件指令刪除、改名、更新文件,完成任務(wù)后,將刪除Wininit.ini文件本身,繼續(xù)啟動(dòng)過(guò)程。所以Wininit.ini文件中的指令只會(huì)被執(zhí)行一次,列目錄時(shí)也通常沒(méi)有它的蹤影。

    三、妙用Wininit.ini文件刪除windows下的文件

用Wininit.ini文件刪除文件其格式為:
[rename]
filename1=filename2
……
雖然名為“rename”,卻可實(shí)現(xiàn)刪除、改名、更新文件的功能。行“filename1=filename2”相當(dāng)于依次執(zhí)行“copy filename2 filename1”及“del filename2”這兩個(gè)DOS命令。沒(méi)有用過(guò)DOS的朋友可能不知道這兩條命令的含義,下面來(lái)簡(jiǎn)單解釋一下。命令copy filename2 filename1的意思是復(fù)制“filename2”文件,并將新文件命名為filename1;命令del filename2的意思是刪除filename2文件。

啟動(dòng)時(shí),Windows將用filename2覆蓋filename1,再刪除filename2,這就實(shí)現(xiàn)了用filename2與更新filename1的目的,如果filename1不存在,實(shí)際結(jié)果是將filename2改名為filename1;如果要?jiǎng)h除文件,可令filename1為nul,例如,打開(kāi)記事本,輸入下面的內(nèi)容:
[rename]
nul=pathfilename
……

其中[rename]在wininit.ini中可以起到刪除和更名文件的作用:“nul”表示是刪除文件,“=”后面的部分為你希望刪除的文件的完整路徑名,要注意的是應(yīng)該使用文件的短文件名(即“C:Program Files”應(yīng)該寫為“c:progra~1”)。這是因?yàn)閃ininit.ini文件的處理是在Windows文件系統(tǒng)調(diào)入前,所以不支持長(zhǎng)文件名。

下面我們看一個(gè)完整的例子。假設(shè)我們想刪除C:Windows文件夾下的記事本程序notepad.exe,可以這樣做,打開(kāi)記事本,輸入下面的內(nèi)容:
[rename]
nul=C:\Windows\notepad.exe

將編輯好的文件另存為wininit.ini文件,保存在Windows系統(tǒng)目錄中。重新啟動(dòng)Windows,在重啟的過(guò)程中,你的記事本程序和wininit.ini文件本身將被刪除。另外,如果要?jiǎng)h除的是文件夾,用“dirnul”代替“nul”就可以了,注意,“dir”與“nul”之間沒(méi)有空格,切記切記。

再舉個(gè)例子,假如你要?jiǎng)h除Windowstemp文件夾,就可以這樣做,打開(kāi)記事本,將下面的內(nèi)容另存為wininit.ini文件,仍然要保存在Windows系統(tǒng)目錄中,重啟電腦再次進(jìn)入Windows中,你會(huì)發(fā)現(xiàn)temp文件夾已經(jīng) 被刪除了:
[rename]
dirnul=C:\Windows\temp

編后語(yǔ):事實(shí)上,Wininit.ini文件的應(yīng)用很多,除了經(jīng)常在軟硬件的安裝程序中用到外,還有軟硬件的卸載程序中用到,比如:假設(shè)你要為自己的軟件編寫一個(gè)卸載程序,這個(gè)卸載程序本身是不可能被自己刪除的,因?yàn)樗噲D刪除自身時(shí),自身卻正在運(yùn)行。為了清除卸載程序本身,你就得借助于Wininit.ini文件。順便提一句,在安裝Windows的最后階段,就是利用Wininit.ini文件來(lái)清除和更名被安裝程序SETUP自身使用的文件。
關(guān)鍵詞:winxp

贊助商鏈接: