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

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

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

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

    二、Wininit文件工作機理

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

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

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

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

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

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

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

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

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

贊助商鏈接: