1

在用户的环境变量下,我添加了一个变量,其键名为 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 以某种方式在某种“shell”中启动该过程并覆盖该“shell”中的变量。

此外,我的应用程序使用相同的键但不同的值启动多个进程。无法更改密钥。它必须是 TMP_VAR,但允许更改该值。

我的问题是:我的应用程序如何启动一个新进程,在某种“shell”中使用 StartInfo.EnvironmentVariables 设置相同的键。还是有另一种聪明的解决方案来解决我的问题?

4

1 回答 1

4

进程可以检查键“TMP_VAR”是否存在,而不是添加,如果存在则相应地更改值。

if(StartInfo.EnvironmentVariables.ContainsKey("TMP_VAR"))
    StartInfo.EnvironmentVariables["TMP_VAR"] = "C:/temp/sim";
else
    StartInfo.EnvironmentVariables.Add("TMP_VAR", "C:/temp/sim");
于 2012-05-23T09:24:38.847 回答