如何在NT下獲取程序的路徑

2021-04-13 08:05:19 字數 1962 閱讀 3366

如何在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 或者...