kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

GetEnvrionmentVariable("TEMP")

言わずとしれた環境変数の値を取得する静的メソッド。これで環境変数TEMPを取得すると短い(8+3形式の)ディレクトリになるんですね。

PS>[System.Environment]::GetEnvironmentVariable("TEMP")
C:\DOCUME~1\...\LOCALS~1\Temp

うーん、ちょっと不便。念のためVistaAPIのGetEnvironmentVariable()も同じ結果。あれ、そうだっけ?自前で設定した環境変数だとどうなるかとやってみます。

PS>[System.Environment]::SetEnvironmentVariable("myval", "c:\Program Files")
PS>[System.Environment]::GetEnvironmentVariable("myval")
c:\Program Files

という結果になります。8+3形式のファイル名を生成していないような環境(KB130694)でも短いファイル名でしか返しません。もちろんこの状態でもファイルの作成はできるので、大丈夫といえば、大丈夫なのかな…。ちょっと気持ち悪いけど。空白をうまく扱えないプログラムがいまだにあるための仕様なんでしょうか。
余談だけど、VisitaにはKB130694で紹介されているレジストリのエントリがだいぶ増えてます。NTFSの圧縮や暗号化を無効にするようなエントリも見えます(XPにはありません)。