CUI程序专用
win32控制台程序中可在main函数参数列表中加入TCHAR*env[] 参数,进入main函数时,env参数被赋值,含义为当前进程环境变量,数据类型为字符串指针数组,每个指针都指向一个不同的环境变量(其定义采用常规的“名称=值”的形式)。在此数组中,指向最后一个环境变量字符串的指针后面,会有一个NULL指针,表明这是数组的末尾。
GetEnvironmentStrings
API链接: link.
每个进程都有与它关联的环境块,这是进程地址空间内分配的一块内存,其中包含的字符串和下面相似:
=::=…
VarName1=VarValue1\0
VarName2=VarValue2\0
VarName3=VarValue3\0
VarName4=VarValue4\0
…
\0
每个字符串第一个部分为此环境变量名称,后跟一个等号,之后是希望赋值给此名称。需要注意的是除了第一个以等号开头的字符串,可能还有其它以等号开头的字符串不作为环境变量使用,可能与进程当前目录关联。
下面演示通过以上两种方式访问当前进程环境变量。
// An highlighted block
// GetEnvironmentStringsDemo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <strsafe.h>
#include <string>
using namespace std;
void DumpEnvStrings()
{
PTSTR pEnvBlock= GetEnvironmentStrings();//获取当前环境变量
TCHAR szName[MAX_PATH];
TCHAR szValue[MAX_PATH];
PTSTR pszCurrent =pEnvBlock;
HRESULT hr =S_OK;
PCTSTR p