問題引入
不知道大家最近工作生活中有沒有碰到這樣的問題:
1、卸載程序,結果沒卸載乾淨。程序的安裝目錄中還剩下一個dll文件。想刪,結果系統提示說dll文件被某個進程佔用了,不讓刪。2、安裝軟體後需要破解或者修改一些配置,通常會有替換配置文件 dll 文件。但是有些情況當安裝軟體時 其服務默認是自動開啟的,此時也就會用到對應的 dll 文件,這個時候在進行更改就會出現異常,windows 會提示該文件已被某個進程佔用。
我最近在安裝一個服務組件的軟體時,因為其內置了一個 sql 資料庫程序,當時沒留意。再替換配置文件 時才發現 dll 文件被某個進程佔用了。重啟程序、重啟電腦都未能解決,問題就指向了一個原因,那就是該服務是自動開啟的,即 windows 開機就自動開啟,因而也就會一直佔用該 dll 文件。但是通過 windows 的服務列表界面有很多服務一眼也看不出是哪個服務佔用。(當然對啟動的服務都很了解的話,就會知道安裝一個軟體會有哪些服務被啟動。)被這個問題卡住了,搜索了半天資料找到了下面這個神器:tasklist 。(好吧,承認是windows平臺的底層操作不熟,但是解決問題過程中學習成長還是很有成就感的不是,相信你也有這體會。)
關於 dll 文件
DLL( Dynamic Link Library ) 文件為動態連結庫文件,又稱「應用程式拓展」,是軟體文件類型。在 Windows 中,許多應用程式並不是一個完整的可執行文件,它們被分割成一些相對獨立的動態連結庫,即
DLL 文件,放置於系統中。當我們執行某一個程序時,相應的 DLL 文件就會被調用。一個應用程式可使用多個
DLL 文件,一個 DLL 文件也可能被不同的應用程式使用。
1、 作用
在 Windows作業系統中,每個程序都可以使用該 DLL 中包含的功能來實現「打開」對話框。這有助於促進代碼重用和內存的有效使用。通過使用 DLL ,程序可以實現模塊化,由相對獨立的組件組成。 因為模塊是彼此獨立的,所以程序的加載速度更快,而且模塊只在相應的功能被請求時才加載。此外,可以更為容易地將更新應用於各個模塊,而不會影響該程序的其他部分。
2、 特點
使用較少的資源推廣模塊式體系結構簡化部署和安裝
利器登場
一、用法明細
tasklist 這個命令還是很好使的,先看下用法手冊:
當然解決問題只用了 tasklist /m filename.dll 一個命令就解決了,示例如下:
二、常用用法
1、查看本機進程
在"命令提示符"中輸入 Tasklist 命令即可顯示本機的所有進程(見下圖)。本機的顯示結果由5部分組成:圖像名(進程名)、PID、會話名、會話#和內存使用。
2.查看遠程系統的進程
在命令提示符下輸入 以下命令:
注意:使用Tasklist命令查看遠程系統的進程時,需要遠程機器的RPC服務的支持,否則,該命令不能正常使用。
3.查看系統進程提供的服務
Tasklist命令不但可以查看系統進程,而且還可以查看每個進程提供的服務。如查看本機進程 SVCHOST.EXE 提供的服務,在命令提示符下輸入如下命令。可以看到,有很多個SVCHOST.EXE 進程,對應很多項服務使用這個進程。
對於遠程系統來說,查看系統服務也很簡單,使用
Tasklist /s 220.25.122.21 /u admin /p admin123 /svc
命令,就可以查看IP位址為 220.25.122.21 的遠程系統進程所提供的服務。
4.查看調用DLL模塊文件的進程列表
要查看本地系統中哪些進程調用了 shell32.dll 模塊文件,只需在命令提示符下輸入
Tasklist /m shell32.dll
即可顯示這些進程的列表。上文已經給過演示,參考下即可。
5.使用篩選器查找指定的進程在命令提示符下輸入
TASKLIST /FI USERNAME ne NT AUTHORITY\SYSTEM /FI STATUS eq running
,就可以列出系統中正在運行的非 SYSTEM 狀態的所有進程。其中 /FI 為篩選器參數,ne 和 eq 為關係運算符 "不相等" 和 "相等" 。
6、結束進程1) Tasklist談到 Tasklist 命令,我們就不得不提到它的孿生兄弟 Taskkill 命令,顧名思義,它是用來關掉進程的。
要關掉本機的notepad.exe進程,有兩種方法
先使用Tasklist查找它的PID,假設系統顯示本機 notepad.exe ( notepad.exe 是個病毒性程序,很難刪除,一般在C:/windows/system32下)進程的 PID 值為 1132,然後運行Taskkill /pid 1132命令即可。其中 /pid 參數後面是要終止進程的PID值。直接運行 taskkill /IM notepad.exe 命令,其中 /IM 參數後面為進程的圖像名。
詳細用法如下:
2)、NTSD
系統 debug 級的 ntsd ,很多進程 Taskkill 是殺不了的,但是用ntsd就可以,基本上除了WINDOWS 系統自己的管理進程, ntsd 都可以殺掉,不過有些 rootkit 級別的超級木馬就無能為力了,不過幸好這類木馬還是很少的。
以上是對於 windows 平臺進程相關的一些命令以及相關問題的整理回顧。
【寫在最後】
1- 問題搜集
你在平時工作生活中遇到過 windows 平臺哪些坑?又是如何解決的?歡迎留言探討。
2- 如果文章對你有幫助,動動小手關注下點個讚