2011-10-19 11 views
1

私は以下のコマンドでユーザーに変数を設定しました。私はSystem.Environment.GetVariable("something")を使用して変数を取得しようとすると、私はヌルとして値を取得環境変数を取得しようとするとnullが返されます

c:\>set something="C:\programfiles\win\something"

誰もがこの問題を説明できますか?

+1

同じコンソールでプログラムを実行していますか?環境変数はコンソールセッション間では伝播されません(Windowsでは 'programfiles'のために仮定します)。 –

答えて

1

setコマンドは、コンソールスコープ内でのみ変数を設定します。これを行う代わりに、この変数をシステムプロパティで設定することができます。

1

setコマンドを使用して環境変数を設定した場合、その変数は実際には現在のコンソールでのみ設定されます。だから、あなたはそれが正常に動作し、var.exeという変数somethingを出力したアプリケーションがある場合:

C:\>var.exe 


C:\>set something=x 

C:\>var.exe 
x 

をしかし、あなたは別のコンソール(または1なし)から同じアプリケーションを実行する場合、変数が設定されません。

setコマンドを使用して環境変数をグローバルに設定することはできないようです。しかし、Environment.SetEnvironmentVariable()(。targetパラメータを指定)を使用して.Netアプリケーションから行うことも、Windowsの "環境変数"ウィンドウで手動で行うこともできます。

関連する問題