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

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

(C++)環境変数のパスを展開する

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

Win32 APIExpandEnvironmentStrings 関数を使えばいいようです。

注意点は %appdata% だと %%appdata%% というように%でエスケープしないといけないという点です。

こんな感じで使います。

WCHAR CheckFileName[1024];

swprintf( CheckFileName , _T("%%APPDATA%%\\test.txt") );

WCHAR CheckFileName2[1024];

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

なお、各OSの環境変数パスの一覧はVistaとXPにおけるパス関係のユーザ環境変数の相違。 - 片っ端から忘れていけばいいじゃない。できれいにまとめられています。