#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)