#include "stdafx.h"
/*
环境变量,大家熟知而容易忽视的东西.
程序有,
用户也有,
系统也有.
注册表里面经常用到.
有的是环境变量的缩写.
如何转换为真正的路径呢?
也许!大多说人认为是小事一桩.
真正的用来,要安全的使用还要好好考虑考虑.
其余的更多的函数还有:
ExpandEnvironmentStringsForUser
PathUnExpandEnvStrings
DoEnvironmentSubst
GetAllUsersProfileDirectory
有的读取到的环境变量是缩写的,注册表和GetEnvironmentStrings函数等.
所以这就需要转化.
虽然自己写入注册表的缩写的环境变量机会很小,修改环境变量或者自己的程序的设置等.
所以有此文.
made by correy
made at 2014.02.19
email:kouleguan at hotmail dot com
homepage:http://correy.webs.com
*/
#include <windows.h>
#include <shlwapi.h>
#pragma comment(lib, "shlwapi.lib")
#define INFO_BUFFER_SIZE 32767 //参见ExpandEnvironmentStrings 的说明:The size of the lpSrc and lpDst buffers is limited to 32K.
int main( )
{
////////////////////////////////////////////////////////////////////////////////
//测试ExpandEnvironmentStrings函数的用法.
TCHAR infoBuf[INFO_BUFFER_SIZE] = {0};
DWORD bufCharCount = INFO_BUFFER_SIZE;
bufCharCount = ExpandEnvironmentStrings(L"%TEMP%", infoBuf, INFO_BUFFER_SIZE );//其实也可以动态获取需要的内存的大小.
if (bufCharCount > INFO_BUFFER_SIZE || bufCharCount == 0)
{
int x = GetLastError();
return 0;
}
//获取的结果如下:C:\Users\ADMINI~1\AppData\Local\Temp
////////////////////////////////////////////////////////////////////////////////
//测试PathUnExpandEnvStrings函数的用法.
TCHAR szBuf[MAX_PATH] = {0};
UINT cchBuf = MAX_PATH;
if (!PathUnExpandEnvStrings((LPWSTR)infoBuf, (LPWSTR)&szBuf, cchBuf))
{
int x = GetLastError();
return 0;
}
//获取的结果如下:%SystemDrive%\Users\ADMINI~1\AppData\Local\Temp
////////////////////////////////////////////////////////////////////////////////
return 1;
}
2014年2月19日星期三
环境变量
订阅:
评论 (Atom)