星期三, 2月 13, 2013

簡單查詢占用dll文件的程式

DLL的基本觀念:

    在Windows中,許多應用程式並不是一個完整的可執行檔案,而是被分割成一些相對獨立的動態鏈接庫,即英文全名為Dynamic Linking Library,中文翻譯為「動態鏈接程式庫」簡稱DLL的檔案放置於系統中。

    當我們執行某一個程式時,相應的dll就會被使用。一個應用程式可有多個dll檔案,一個dll檔案也可能被幾個應用程式所共用。假設系統中有一dll具備了與遠端系統進行網絡連結的功能,我們假設為Network.dll,如果有另外一個應用程式想使用該功能,則這個程式只需在執行時與Network.dll進行動態鏈接(Dynamic Linking),就可以運用Network.dll的網絡連結功能來實現遠端連結系統。簡單地說,dll的特性是:

1、dll本身無法自行執行,必須靠其他程式使用。

2、dll檔案都具有一定的功能。

3、在系統剛建立時 (例如剛裝好Windows時),系統中就存在一定數量的dll,而某些應用程式亦會將自已所需的dll添至系統中,導致dll的數量隨應用程式的增加而增加。


    因為dll檔案的特性注定了它可能被多個程式使用,這也是dll檔案為什麼刪除不掉的原因:正在使用的檔案無法刪除。

    那麼到底是哪個程式在使用這個dll檔案呢?下面就簡易說明建議查詢的方法:

步驟 1. 開啟命令提示字元

步驟 2. 輸入下列命令,並按下「Enter」,結束即可關閉"命令提示字元"
tasklist /m > DLLlist.txt (將查詢結果儲存到 c:\ 目錄下的 DLLlist.txt中)

步驟 3. 打開 C:\目錄下的DLLlist.txt檔案,這個檔案裡所示列出的就是目前執行的各個程式正在使用的dll檔案。可以使用CTRL+F來尋找要查詢的的dll檔案,並查找出是哪個程式在使用這個dll檔案。


步驟 4. 使用 CTRL+ALT+DEL打開Windows工作管理員,結束佔用dll檔案的程式或服務,這時就可以刪除或搬移這個dll檔案了。

步驟 5. 如果查出來的佔用dll檔案的是這個通常有7、8個以上的 svhost.exe 程式/服務,如何是哪個svhost.exe服務佔用了這個dll檔案呢?
可以在命令提示符下輸入tasklist /svc,當然,你也可以把它輸出為文本檔案tasklist /svc > C:\DLLlist.txt。這時檔案裡的svhost.exe會列出各個服務的PID號。這時就可以具體的根據PID來結束服務,達到解除使用dll檔案。

至於這個教學有什麼用途?

一般常用來手動刪除病毒檔案或一些頑強的程式,服用前仍請小心。

THE END