私は以下のコマンドでユーザーに変数を設定しました。私はSystem.Environment.GetVariable("something")
を使用して変数を取得しようとすると、私はヌルとして値を取得環境変数を取得しようとするとnullが返されます
c:\>set something="C:\programfiles\win\something"
。
誰もがこの問題を説明できますか?
私は以下のコマンドでユーザーに変数を設定しました。私はSystem.Environment.GetVariable("something")
を使用して変数を取得しようとすると、私はヌルとして値を取得環境変数を取得しようとするとnullが返されます
c:\>set something="C:\programfiles\win\something"
。
誰もがこの問題を説明できますか?
setコマンドは、コンソールスコープ内でのみ変数を設定します。これを行う代わりに、この変数をシステムプロパティで設定することができます。
set
コマンドを使用して環境変数を設定した場合、その変数は実際には現在のコンソールでのみ設定されます。だから、あなたはそれが正常に動作し、var.exe
という変数something
を出力したアプリケーションがある場合:
C:\>var.exe
C:\>set something=x
C:\>var.exe
x
をしかし、あなたは別のコンソール(または1なし)から同じアプリケーションを実行する場合、変数が設定されません。
set
コマンドを使用して環境変数をグローバルに設定することはできないようです。しかし、Environment.SetEnvironmentVariable()
(。target
パラメータを指定)を使用して.Netアプリケーションから行うことも、Windowsの "環境変数"ウィンドウで手動で行うこともできます。
同じコンソールでプログラムを実行していますか?環境変数はコンソールセッション間では伝播されません(Windowsでは 'programfiles'のために仮定します)。 –