0

环境变量解析和设置

发表者:wenzhou1219分类:接口2016-03-13 21:15:00 阅读[709]

环境变量的使用通常分为两种:

1.解析GetEnvironmentStrings获得环境变量块,这通常需要自己去遍历解析

2.设置、获得、删除指定键的环境变量,这可以借助Windows API来完成

本封装类,提供了这两种操作的封装:

对于第一种直接调用EnumEnv可以将解析的值保存到map中或调用回调函数自定义处理。

对于第二种封装Windows API,更加方便使用。


使用示例如下:

//设置回调处理函数
void WINAPI FuncEnum(CString csKey, CString csValue)
{
	wcout << csKey.GetBuffer() << L" => " << csValue.GetBuffer() << endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "chs");

	map<CString, CString> mapEnv;
	CEnvVarParser envVar;
	int nCntEnv;

	//遍历环境演示
	wcout << L"遍历环境演示" <<endl;
	bool bRet = envVar.EnumEnv(&mapEnv, FuncEnum, &nCntEnv, true);

	wcout << endl 
		  << L"Total count: " << nCntEnv << endl; 
	wcout << L"Enum Result: " << bRet << endl;

	//设置、获得、删除环境变量演示
	wcout << endl 
		  << L"设置、获得、删除环境变量演示" << endl;
	TCHAR szValue[MAX_VALUE_LEN];
	CString csValue;

	envVar.SetEnv(L"Jim Wen", L"Set Env Var 设置环境变量");
	envVar.GetEnv(L"Jim Wen", csValue);
	wcout << L"Get Jim Wen" << L" => " << envVar.GetEnv(L"Jim Wen", csValue) << endl;
	wcout << L"Jim Wen"		<< L" => " << csValue.GetBuffer() << endl;

	envVar.DeleteEnv(L"Jim Wen");
	wcout << L"Get Jim Wen" << L" => " << envVar.GetEnv(L"Jim Wen", csValue) << endl;

	//展开环境变量演示
	wcout << endl 
		  << L"展开环境变量演示" << endl;
	envVar.ExpandEnv(L"%appdata%", csValue);
	wcout << L"Expand of %appdata% is: " << csValue.GetBuffer() << endl;
	return 0;
}
结果如下:

遍历环境演示
:: => ::\
C: => c:\Users\Administrator\Desktop\环境变量解析和设置\CEnvironmentVar
ALLUSERSPROFILE => C:\ProgramData
APPDATA => C:\Users\Administrator\AppData\Roaming
CommonProgramFiles => C:\Program Files (x86)\Common Files
CommonProgramFiles(x86) => C:\Program Files (x86)\Common Files
CommonProgramW6432 => C:\Program Files\Common Files
COMPUTERNAME => QIHUQIH-I5QE4NK
ComSpec => C:\Windows\system32\cmd.exe
DRVDIR => C:\DRV
FP_NO_HOST_CHECK => NO
.........

Total count: 57
Enum Result: 1

设置、获得、删除环境变量演示
Get Jim Wen => 1
Jim Wen => Set Env Var 设置环境变量
Get Jim Wen => 0

展开环境变量演示
Expand of %appdata% is: C:\Users\Administrator\AppData\Roaming

下载链接  访问密码 2897


名字:

个人主页地址:

E-mail:

评论列表