%SystemRoot%等が含まれるパスをフルパスにする一般的な方法は?

[戻る]
Arutu 2006/06/26(月) 19:49:26
いつもお世話になっております。

%SystemRoot%
%SystemDrive%
等の環境変数(?)が混じったパスをドライブ名からのフルパスに変換したいのですが、

自分で文字列を検索しつつ

GetSystemDirectory
GetWindowsDirectory

等を屈指して変換すればよいのでしょうか?
if文やらstrncmpやらを使えば出来そうですが、自作だと信頼性も低いですし面倒です。

つまり、一般的な方法を探しています。

それと、
%SystemRoot%
%SystemDrive%
等の書き方を総称してなにか名前がついていれば教えていただきたいです。(検索がむずい)

よろしくお願いします。

Blue 2006/06/26(月) 20:49:50
過去ログ
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200603/06030061.txt
が参考になりますでしょうか?

Arutu 2006/06/26(月) 22:09:43
[[解決]]
Blueさん返信ありがとうございます。

ExpandEnvironmentStrings
というAPIで解決しました。

文字列を分解したりくっつけたりしなくていいのが楽でいいですね。

TCHAR buf[PATH_MAX];
ExpandEnvironmentStrings( buf, "%SystemRoot%\system32\NOTEPAD.EXE", PATH_MAX );

------------------------------------------
buf : ["C:\WINDOWS\system32\NOTEPAD.EXE"]

古いスレッドには追加発言できません。