繁体   English   中英

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

[英]writing environment variable and reading it from the same process

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

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

打赌,您只能为当前流程设置变量。 您应该尝试重载Environment.SetEnvironmentVariable方法

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

[编辑]重新阅读您的问题,您在标题“相同的过程”和“新的exe”中说。 用Env可变的术语来说,跨越一个新过程意味着env变量具有一个新的过程范围。 他们不会仅仅因为它是同一个可执行文件而在进程范围内共享环境变量。 也许您应该在更高层次上解释您要做什么。

[Edit2]不知道为什么会失败...但是在使用ProcessStartInfo.EnvironmentVariables属性生成过程时,可以指定env变量

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM