獲取NT中系統程序的路徑

2021-04-01 19:55:39 字數 1394 閱讀 6362

如何在nt下獲取程序的路徑(增補)

——獲取nt中系統程序的路徑

天津 趙春生

一、程式說明

最近整理文件,發現以前寫的《如何在nt下獲取程序的路徑》一文中還有個問題沒有解決:原文中的程式無法獲取系統程序的路徑,如:csrss.exe。記得vckbase上有位網友說過乙個方法:「給列舉的程序增加se_debug_name許可權即可」,於是在網上找了些資料,解決了原文中的問題。這裡要特別感謝那位名叫rovershen的網友!

我自定義了乙個函式,用來賦予程序指定的許可權(本例為se_debug_name):

bool enableprivilege(handle htoken,lpcstr szprivname)

通過openprocesstoken函式獲得程序(本例為自身程序)訪問令牌的控制代碼,然後呼叫此函式後就可以像原文那樣開啟目標程序獲取路徑了。可以看到:本方法已經成功獲取了系統程序csrss.exe的路徑。

二、具體實踐//

* 本程式適用於:winnt

* **在win2000p+sp4 + vc6+sp6測試通過

*///

#include #include #include "psapi.h"

#pragma comment( lib, "psapi.lib" )

//自定義函式:賦予指定特權。這裡用來提公升程式許可權。

bool enableprivilege(handle htoken,lpcstr szprivname);

int main(void)

{ dword processid[1024],needed,processcount,i;

handle hprocess;

hmodule hmodule;

char path[max_path] = "",temp[256];

handle htoken;

printf("showprocesspath 2.0 with [process status api]/n/n");

if ( openprocesstoken(getcurrentprocess(),token_adjust_privileges,&htoken) )

{ if (enableprivilege(htoken,se_debug_name))

{

enumprocesses(processid, sizeof(processid), &needed);

processcount=needed/sizeof(dword);

for (i=0;i

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

如何在nt下獲取程序的路徑 整理 ackarlix 一 獲取nt下程序路徑的方法在 win9x 系統中,利用 toolhelp api 中的相關函式可以很方便得得到程序的名稱及其路徑。但這種方法在 nt系統中就不能奏效了,szexefile 僅僅得到的是程序的名稱,並沒有包含程序的路徑。如何在nt ...

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

一 獲取nt下程序路徑的方法 在win9x系統中,利用toolhelp api中的相關函式可以很方便得得到程序的名稱及其路徑。但這種方法在nt系統中就不能奏效了,szexefile僅僅得到的是程序的名稱,並沒有包含程序的路徑。如何在nt下獲取程序的路徑呢?由於win9x系統不在我們討論的範圍之內,所...

Windows API 獲取系統路徑

但是這樣每次開發效率就比較低,所以還是整理下吧,加深下印象,至少後面可以在自己部落格裡就能輕鬆的找到了吧。直接上 吧。include stdafx.h include include include include define make pair id std pair id,t id void ...