2011-12-08 16 views
1

コンソールアプリケーションから環境変数を設定しようとしていますが、Windowsアプリケーションから実行しています。私はコンソールアプリケーションを呼び出して、それにパラメータとして環境変数の値を送信し、次の実行に進むために10秒待機するようにスレッドを設定します。 次の手順では、環境変数に設定された値を読み取る新しい.exeを読み込もうとします。 exeは新しい値を読み取っておらず、先に設定した値を引き続き参照します。環境変数を書き込んで同じプロセスから読み取る

アプリケーションのソリューションが閉じて開いたら、新しい値、つまりvshostを読み込みます。

+0

HTTP ://msdn.microsoft.com/en-us/library/z46c489x.aspx – Maheep

答えて

1

現在のプロセスに対してのみ変数を設定することを賭けてください。あなたがこのoverload of the Environment.SetEnvironmentVariable method試してみてください:

Environment.SetEnvironmentVariable("YourVar", "YourValue", 
    EnvironmentVariableTarget.User); 

[編集]あなたの質問を再読み込みを、あなたは、タイトル「同じプロセス」で、質問「新しいEXE」で述べています。 Env varialbleの場合、新しいプロセスにまたがって、env変数の新しいプロセススコープを意味します。同じ実行可能ファイルであるため、env変数をプロセススコープと共有することはありません。たぶんあなたはより高いレベルで何をしようとしているのかを説明する必要があります。

それが失敗した理由を理解する[EDIT2]わからない...しかし、あなたはProcessStartInfo.EnvironmentVariables Property

を使用してプロセスを生成する場合、基本的に、それは(テストしていない)ことができたenv変数を指定することができます。

var psi = new ProcessStartInfo { 
    FileName="yourExe" 
}; 
psi.EnvironmentVariables.Add("YourVariable","YourValue"); 
var process = Process.Start(psi); 
+0

こんにちは、スティーブ私の質問をreframing私は私がenvrionment変数をコードを設定するWindowsアプリケーションがあります。次に、同じwinodwsアプリケーションを使用してサードパーティのアプリケーションを呼び出します。これは環境変数の値を読み取る必要があります。値を読み取ることはできますが、Windowsアプリケーションからの最新の更新値ではなく、常に以前の値を取得します。 私はvshostと一緒にアプリケーションを終了し、環境変数を読むと、私は新たに設定された値を取得することができます.. どうすればこの問題を解決できますか? – user1087209

+0

私のWindowsアプリケーションでは、exeを呼び出します System.Diagnostics.Process.Start( "D:\\新しいフォルダ\\ Env \\設定Env \\ bin \\デバッグ\\ SettingEnv.exe"、strFilesPath); このexeには、Environment.SetEnvironmentVariable( "YourVar"、 "YourValue"、EnvironmentVariableTarget.Machine)があります。 System.threading.Thread.Sleep(10000) 次に、環境変数セットの値を読み取るべき第3の部分exeをロードします – user1087209

+0

私のサードパーティのexeがマシンレベルで環境変数を読み込みます – user1087209

関連する問題