WindowAPI 訪問當前程序環境變數兩種方法

2021-10-05 08:32:17 字數 1196 閱讀 5103

win32控制台程式中可在main函式引數列表中加入tchar*env 引數,進入main函式時,env引數被賦值,含義為當前程序環境變數,資料型別為字串指標陣列,每個指標都指向乙個不同的環境變數(其定義採用常規的「名稱=值」的形式)。在此陣列中,指向最後乙個環境變數字串的指標後面,會有乙個null指標,表明這是陣列的末尾。

每個字串第乙個部分為此環境變數名稱,後跟乙個等號,之後是希望賦值給此名稱。需要注意的是除了第乙個以等號開頭的字串,可能還有其它以等號開頭的字串不作為環境變數使用,可能與程序當前目錄關聯。

下面演示通過以上兩種方式訪問當前程序環境變數。

// an highlighted block

// getenvironmentstringsdemo.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include

#include

#include

using namespace std;

void

dumpenvstrings()

hr=stringcbcopyn

(szvalue,

max_path

,pszpos,

_tcslen

(pszpos)+1

);if(

succeeded

(hr)

)else

if(hr==

strsafe_e_insufficient_buffer

)else

}else

current++

;while

(*pszcurrent!=

text

('\0'))

pszcurrent++

; pszcurrent++;if

(*pszcurrent==

text

('\0'))

break;}

freeenvironmentstrings

(penvblock);}

void

dumpenvvariables

(ptstr penvblock)

else}}

int _tmain

(int argc, _tchar* ar**[

],_tchar*env)

reparent指定程序到當前程序

作者 李先靜 今 天遇到乙個問題,需要監視某個應用程式的退出事件,並得到它的退出碼。waitpid只能監視子程序,對其它程序沒有效果,怎麼才能reparent乙個 程序呢?我在核心裡找了半天也沒有找到相應的系統呼叫,後來想到偵錯程式都可以,那一定有辦法。偵錯程式是用ptrace實現的,我試了一下,發...

reparent指定程序到當前程序

作者 李先靜 今 天遇到乙個問題,需要監視某個應用程式的退出事件,並得到它的退出碼。waitpid只能監視子程序,對其它程序沒有效果,怎麼才能reparent乙個 程序呢?我在核心裡找了半天也沒有找到相應的系統呼叫,後來想到偵錯程式都可以,那一定有辦法。偵錯程式是用ptrace實現的,我試了一下,發...

獲得當前程序名

用快照取得當前的程序名,下面是測試小例子。include 需要匯入tlhelp32.h moduleentry32 mcurprocessmodule32 mcurprocessmodule32.dwsize sizeof moduleentry32 最好手動初始化,因為會取前4位元組作為長度。ha...