檔案描述,Wininit檔案工作機制,檔案的格式簡述,套用,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運行時不能被施以這些操作的檔案,它存在的時間很短,所以顯得有點神秘。
Wininit檔案工作機制
一、Wininit 檔案工作機制
在 Windows 中,一個執行檔如果正在運行或某個庫檔案(*. dll 、*.vxd、*.sys 等)正在被打開使用,則不能被改寫或刪除。例 如,你不可能在資源管理器中刪除 Windows 的 Explorer.exe。而在 Windows 的 GDI 界面下,有一些檔案一直處於這種狀態下 ,除 Explorer.exe 外,還有顯示驅動程式庫檔案、檔案子系統庫檔案等 。 如果我們要對這些檔案進行升級,改動,就必須在 Windows 保護模 式下進行,於是 Windows 就提供了基於 Wininit.ini 檔案的一個機制 來完成這個任務 ,這個機制是 ,要刪除或改寫這類檔案的應用程式 , 按一定的格式把命令寫入 Wininit.ini 。Windows 在重啟時 ,將在 Windows 目錄下搜尋 Wininit.ini 檔案,如果找到,就遵照該檔案指 令刪除、改名、更新檔案,完成任務後 ,將刪除 Wininit.ini 檔案本 身,繼續啟動。所以 Wininit.ini 檔案中的指令只會被執行一次,列 目錄時也通常沒有它的蹤影 。
檔案的格式簡述
Windows 95 Resource Kit提到Wininit.ini檔案有三個可能的段,但只敘述了“rename”段的用法,雖然名為“rename”,卻可實現刪除、改名、更新檔案的功能。其格式為:
[rename]
……
filename1=filename2
……
行“filename1=filename2”相當於依次執行“copy filename2 filename1”及“del filename2”這兩個DOS命令。
啟動時,Windows將用filename2覆蓋filename1,再刪除filename2,這就實現了用filename2與更新filename1的目的,如果filename1不存在,實際結果是將filename2改名為filename1;如果要刪除檔案,可令filename1為nul,例如:
[rename]
……
nul=filename2
……
將刪除filename2。
以上檔案名稱都必須包含完整路徑,注意:由於Wininit.ini檔案的處理是在Windows檔案系統調入前,所以不支持長檔案名稱。
套用
Wininit.ini的套用很多,除了經常在軟硬體的安裝程式中用到外,還有軟硬體的卸載程式中用到,比如:假設你要為自己的軟體編寫一個卸載程式,這個卸載程式本身是不可能被自己刪除的,因為它試圖刪除自身時,自身卻正在運行。為了清除卸載程式本身,你就得藉助於Wininit.ini檔案。順便提一句,在安裝Windows的最後階段,就是利用Wininit.ini檔案來清除和更名被安裝程式SETUP自身使用的檔案。
Wininit.ini防毒
在Windows平台下殺病毒,會碰到類似問題。如何清除正在運行或處於打開狀態的染毒檔案中的病毒?了解了Wininit.ini檔案的工作機制,我們可以這樣來設計防毒軟體:在發現某個染毒檔案因為正處於打開狀態或執行狀態而不能清除病毒時,可將其複製一份,並將複製品去毒。然後在Windows目錄下創建一個Wininit.ini檔案(創建之前要先查查Wininiti.ini檔案是否存在),建立[rename]段,加入一行:染毒檔案名稱=複製品檔案名稱;繼續清掃病毒,如果發現類似檔案,可在[rename]下再添加一行即可,掃描完成後強烈建議用戶重新啟動或乾脆強行重新啟動,以便執行Wininiti.ini完成整個清毒過程。