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