编写环境变量并从同一个过程中读取它

时间:2011-12-08 11:26:23

标签: c# .net environment-variables

我试图通过从我的Windows应用程序执行它来从控制台应用程序设置环境变量。我调用控制台应用程序并将环境变量的值作为参数发送给它,然后将线程设置为等待10秒以继续下一次执行。 在下一步中,我尝试加载一个新的.exe,它读取设置为环境变量的值。 exe不会读取新值并继续引用之前设置的值。

一旦应用程序的解决方案关闭并打开,它就会读取新值,即重新加载vshost。

1 个答案:

答案 0 :(得分: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);