2017-06-08 2 views
-1

カスタム環境変数を追加しましたが、ExpandEnvironmentVariablesに戻すことができません。ExpandEnvironmentVariablesでカスタム変数を返す方法

これらの2つの呼び出しが正常に動作:

string s = Environment.GetEnvironmentVariable("TEST", EnvironmentVariableTarget.Machine); 

// S = "D:\ TEMP2"

string path = Environment.ExpandEnvironmentVariables(@"%windir%\Temp1"); 

//パス= "C:\ WINDOWS \ TEMP1"

ただし、この呼び出しは同じ入力文字列を返します。

var path = Environment.ExpandEnvironmentVariables(@"%TEST%\Temp1"); 

// path = "%TEST%\\Temp1" 

は私が得ることを期待D:\ TEMP2 \ TEMP1私が正しく、この最後の呼び出しでカスタムEnvironmentVariableを取得するために行方不明です何

Envionmental Variables

+0

変数をコードで設定していますか?可能であれば、そのコードを含むように質問を編集できますか? – stuartd

+2

最も明白な理由は、VSまたはプログラムを再起動しなくても、この変数をシステム環境に追加したことです。変更を有効にするには、ログアウトして再度ログインする必要があります。 –

+0

システム変数を設定するには、単にOSインターフェイスのシステムプロパティを解除します。私はコード内の変数のみを取得しています。 GetEnvironmentVariableは動作しますが、ExpandEnvironmentVariablesは... –

答えて

0

HansとEvkのコメントは正しいです。誰も回答を追加しないので、この質問を終了します。

なぜなら、ExpandEnvironmentVariablesは、アプリケーションの起動後に追加されたキーを取得しません。また、実行中のWindowsサービスでこれをテストしました。新しいキーが見つかって入力されたサービスを再起動した後であった。

この動作は、Microsoftドキュメントには記載されていません。

関連する問題