言わずとしれた環境変数の値を取得する静的メソッド。これで環境変数TEMPを取得すると短い(8+3形式の)ディレクトリになるんですね。
PS>[System.Environment]::GetEnvironmentVariable("TEMP") C:\DOCUME~1\...\LOCALS~1\Temp
うーん、ちょっと不便。念のためVistaでAPIのGetEnvironmentVariable()も同じ結果。あれ、そうだっけ?自前で設定した環境変数だとどうなるかとやってみます。
PS>[System.Environment]::SetEnvironmentVariable("myval", "c:\Program Files") PS>[System.Environment]::GetEnvironmentVariable("myval") c:\Program Files
という結果になります。8+3形式のファイル名を生成していないような環境(KB130694)でも短いファイル名でしか返しません。もちろんこの状態でもファイルの作成はできるので、大丈夫といえば、大丈夫なのかな…。ちょっと気持ち悪いけど。空白をうまく扱えないプログラムがいまだにあるための仕様なんでしょうか。
余談だけど、VisitaにはKB130694で紹介されているレジストリのエントリがだいぶ増えてます。NTFSの圧縮や暗号化を無効にするようなエントリも見えます(XPにはありません)。