這是一款由Sysinternals開發(fā)的Windows系統(tǒng)和應(yīng)用程序監(jiān)視工具,目前Sysinternals已經(jīng)被微軟收購,此款不僅結(jié)合了文件監(jiān)視和注冊表監(jiān)視兩個工具的功能,還增加了多項(xiàng)重要的增強(qiáng)功能,此工具支持64位Windows系統(tǒng)
很多人可能把這款工具只當(dāng)成TaskManager(任務(wù)管理器)的替代品,其實(shí)這樣只能說是高射炮打蚊子,大材小用了,作為windows開發(fā)工程師,我極力推薦在編碼和調(diào)試過程中使用此工具,下面介紹一下Process Explorer在開發(fā)過程中的用處。
一、Process Explorer的樹形結(jié)構(gòu)界面
1.準(zhǔn)確的顯示的進(jìn)程的父子關(guān)系
2.通過顏色可以判斷此進(jìn)程處于的狀態(tài)和類型,是掛起還是正在退出,是服務(wù)進(jìn)程還是普通進(jìn)程。
二、顯示進(jìn)程的系統(tǒng)信息
右鍵單擊標(biāo)題欄-選擇Select Columns項(xiàng),選擇你要觀察進(jìn)程的某種特定的信息,這里有幾個選項(xiàng),常用的有Process Image和Process Memory這兩個選項(xiàng)卡,其他的我就不截圖舉例了!
1.顯示進(jìn)程的文件路徑(Image Path)
2.顯示進(jìn)程命令行參數(shù)(Command Line)
3.顯示進(jìn)程是64位進(jìn)程還是32位的(Image Type)
4.顯示進(jìn)程當(dāng)前所在的Session ID(session ID)
5.顯示進(jìn)程當(dāng)前的權(quán)限,是系統(tǒng)用戶權(quán)限還是網(wǎng)絡(luò)管理員權(quán)限還是普通管理員權(quán)限(User Name)
6.顯示當(dāng)前進(jìn)程的Gdi對象個數(shù),內(nèi)核對象個數(shù),線程個數(shù)。
三、顯示當(dāng)前進(jìn)程所加載的DLL
選擇View —> Lower Pane View —> DLLs
1.通過這種方式可以觀察,我們的進(jìn)程是否被其他程序注入DLL
2.通過這種方式了解當(dāng)前進(jìn)程使用了那些編程技術(shù),如圖可見當(dāng)前進(jìn)程用到了Gdi+
3.可以修改Pane View的選項(xiàng)卡,讓其顯示更多的內(nèi)容,比如DLL基地址,DLL內(nèi)存相關(guān)信息等
四、顯示當(dāng)前進(jìn)程所占用的系統(tǒng)資源句柄
選擇View —> Lower Pane View —> DLLs
1.查看當(dāng)前進(jìn)程所占用的資源句柄表
2.可以分析進(jìn)程的邏輯:如圖當(dāng)前TeamViewer的服務(wù)進(jìn)程創(chuàng)建了一個Event事件,并且占用一個Log文件
3.可以檢查自己的程序是否有內(nèi)核句柄泄露。
五、操控進(jìn)程以及顯示進(jìn)程的內(nèi)部信息(這類信息是屬于當(dāng)前進(jìn)程的)
右鍵單擊進(jìn)程
1.可以結(jié)束當(dāng)前進(jìn)程,或者當(dāng)前進(jìn)程樹
2.可以掛起、重啟、從掛其中恢復(fù)一個進(jìn)程
3.查看進(jìn)程信息(如圖-選擇Properties)
1.可以看到當(dāng)前進(jìn)程的用戶組信息
2.可以看到當(dāng)前進(jìn)程申請了哪些特權(quán)
選擇Environment選項(xiàng)卡,可以看到當(dāng)前進(jìn)程的環(huán)境變量,如果自動化編譯或者使用一些開源軟件,查看其環(huán)境變量是很重要的一環(huán)。
六、搜索功能(Ctrl+F)
為什么搜索功能單獨(dú)拉出來說呢,我個人覺得這個功能在很多地方都可以用到,編碼的時候可以查看哪個事件被誰占用了,你直接搜事件名稱就可以了,如果你像刪除一個目錄怎么也刪除不掉,就是說某某文件被人占用,那你可以搜索一下你需要刪除的目錄路徑
如圖:TeamViewer這個文件夾正在被一個服務(wù)占用,這樣我只需要把這個服務(wù)停止,就可以刪除了,常見的還有U盤被占用不讓卸載等等!