写入环境变量并从同一进程中读取它

本文关键字:进程 读取 环境变量 | 更新日期: 2023-09-27 18:17:04

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

一旦应用程序的解决方案被关闭和打开,那么它读取新的值,即重新加载vshost

写入环境变量并从同一进程中读取它

建议您仅为当前进程设置变量。您应该尝试这种环境过载。SetEnvironmentVariable方法:

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

[编辑]重读你的问题,你在标题中说"相同的过程",在问题"新的exe"。就Env变量而言,跨越一个新过程意味着一个新的Env变量的过程范围。它们不会仅仅因为过程范围是相同的可执行文件而与过程范围共享环境变量。也许你应该在更高的层次上解释你正在尝试做什么。

[Edit2]不知道为什么它失败了…但是您可以在使用ProcessStartInfo生成进程时指定env变量。EnvironmentVariables地产

基本上,它可以(未测试):

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