如何在nt下獲取程序的路徑
整理:
ackarlix
一:獲取nt下程序路徑的方法在
win9x
系統中,利用
toolhelp api
中的相關函式可以很方便得得到程序的名稱及其路徑。但這種方法在
nt系統中就不能奏效了,
szexefile
僅僅得到的是程序的名稱,並沒有包含程序的路徑。
如何在nt
下獲取程序的路徑呢?(由於
win9x
系統不在我們討論的範圍之內,所以我們選用
psapi
中的相關函式進行說明,這僅僅適用於
nt系統。)其實也很簡單——用
openprocess()
函式將程序開啟後,再利用
enumproces**odules()
函式列舉該程序的模組,最後利用
getmodulefilenameex()
函式就能取得該程序的路徑了。
下面的這段程式將列舉
nt系統中的程序,並將顯示每個程序的路徑。當然,這種方法對一些系統保護的程序而言或多或少會出現些問題,例如:
**ss.exe
、winlogon.exe
,csrss.exe
等。如果誰有更好的方法請賜教,不勝感激。
二:具體實踐
* 本程式適用於:winnt
* **在win2000p+sp4 + vc6+sp5測試通過*/
#include
#include
#include "psapi.h"
#pragma comment( lib, "psapi.lib" )
int main(void)
else
printf("failed!!!/n");}
closehandle(hprocess);
closehandle(hmodule);
itoa(processcount,temp,10);
printf("/nprocess count:%s/n/n",temp);
return 0;}
// 三:相關測試
用
toolhelp api
按上述方法也能達到獲取程序路徑的目的,但和
psapi
相比後者則更有優勢,詳見下表,測試環境為:
win2000p+sp4
。-----
程序名 --------psapi----thapi---
|**ss.exe | y
n |csrss.exenn
| winlogon.exe | yn
|services.exe y n
| lsass.exe| y
n |svchost.exeyn
| winmgmt.exe|y
n |explorer.exe y y
| mobsync.exe|y
y |conime.exe y y
------------------------------------
四:測試環境
以上**在
win2000p+sp4 + vc6+sp5
測試通過。
如何在NT下獲取程序的路徑
一 獲取nt下程序路徑的方法 在win9x系統中,利用toolhelp api中的相關函式可以很方便得得到程序的名稱及其路徑。但這種方法在nt系統中就不能奏效了,szexefile僅僅得到的是程序的名稱,並沒有包含程序的路徑。如何在nt下獲取程序的路徑呢?由於win9x系統不在我們討論的範圍之內,所...
獲取NT中系統程序的路徑
如何在nt下獲取程序的路徑 增補 獲取nt中系統程序的路徑 天津 趙春生 一 程式說明 最近整理文件,發現以前寫的 如何在nt下獲取程序的路徑 一文中還有個問題沒有解決 原文中的程式無法獲取系統程序的路徑,如 csrss.exe。記得vckbase上有位說過乙個方法 給列舉的程序增加se debug...
WinCE下如何獲取程序所在的目錄
眾所周知,wince下沒有當前目錄的概念,所有路徑都以根目錄 為參考。獲取程序所在目錄的參考 如下。getmodulefilename null,gszpath,max path intlen wcslen gszpath tchar p gszpath len while p t p t 0 或者...