3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(C++)環境変数となってるパスを展開する

%systemroot% とか %ProgramFiles% とかの環境変数のパスをC++で展開する方法です。

Windowsにはそれ用のAPIが用意されているようなので、それを使えばいいようです。

APIExpandEnvironmentStringsを使います。

使い方はこんな感じです。

//MFCでCString使ったとき

CString filePath = _T("%ProgramFiles%\\xxx\\xxx.exe");

char chrPath[MAX_PATH];

CString filePath2 ;

//環境変数を展開

ExpandEnvironmentStrings(filePath,chrPath,sizeof( chrPath ));

filePath2 = chrPath;

 

//C++,Win32(MFC無し)

WCHAR CheckFileName[1024];

swprintf( CheckFileName , _T("%%APPDATA%%\\Common.xcu") );

WCHAR CheckFileName2[1024];

//環境変数を展開

ExpandEnvironmentStrings( CheckFileName ,CheckFileName2,sizeof( CheckFileName2 ));

参考:

環境変数の展開