環境変数の再帰展開について
環境変数の中で環境変数を使用したときに、
こちらの思ったように文字列が展開されません。
例.
システム環境変数
SystemDrive=C:
WORK_PATH=%SYSTEMDRIVE%\temp
PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
ユーザー環境変数
PATH=%WORK_PATH%;%PATH%
こんな感じでセットされている場合、
コマンドプロンプトでset PATHした場合の結果が異なります。
Vistaでは C:\temp;C:\WINDOWS~ と展開されますが、
Windows XP環境では %SYSTEMDRIVE%\temp;C:\WINDOWS~ と、
%SYSTEMDRIVE%の部分がそのままになってしまいます。
Windowsの環境変数には2種類の属性があり、
上記の環境変数を登録する際は"展開可能"属性にしました。
またレジストリの"Command Processor\EnableExtensions"
も1になっていることを確認しています。
ちなみにset WORK_PATHとしたときは、
両方の環境で C:\temp と表示されることから、
環境変数の再帰展開がうまく機能していないと思われます。
XP環境でもVista環境と同じように環境変数の再帰展開をすることは可能でしょうか?
お礼
早速回答頂きありがとうございます。 次のレジストリキーのあるエントリデータを書き換えてリブートしても元に 戻るため、この質問をさせて頂いた次第です。 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion \Explorer\Shell folders その後、色々調べた結果次のことが分かりました。 前記のレジストリキーの最後のShell foldersをUser Shell foldersに変え たレジストリキーがあり、このエントリーデータの環境変数は展開されない でそのままで保持されていて、その環境変数が展開されたのがShell foldersに存在します。 従いまして、User Shell folders中のデータを書き換えれば良いことが 分かりました。 ありがとうございました。