ユーザーの環境変数の下に、eg というキーを持つ変数を追加しました。
TMP_VAR
と値など。
C:\temp\sim
VS2010 .Net 4.0 で作成された C# アプリケーションで新しいプロセスを開始し、StartInfo.EnvironmentVariables.Add("TMP_VAR", C:\temp\sim); を設定すると、exe ファイルをダブルクリックすると、次のエラーが表示されます。
Item has already been added. Key in dictionary: 'TMP_VAR' Key being added: 'TMP_VAR'
ただし、VS2010 (F5 キーを押す) から起動すると、エラーは発生しません。
私の理論では、VS2010 はなんらかの「シェル」でプロセスを開始し、その「シェル」内の変数を上書きするというものです。
また、私のアプリケーションは、同じキーで異なる値を持つ複数のプロセスを開始します。キーは変更できません。TMP_VAR である必要がありますが、値は変更できます。
私の質問は、アプリケーションが新しいプロセスを開始し、ある種の「シェル」で StartInfo.EnvironmentVariables を使用して同じキーを設定するにはどうすればよいかということです。または、私の問題に対する別のスマートな解決策はありますか?