我使用Process.Start()从父进程启动子进程。在子进程中,我创建了新的变量调用
Environment.SetEnvironmentVariable("MessageKey", "MessageValue");
退出子进程后,我想使用
var env = childProcess.StartInfo.EnvironmentVariables;
string MessageValue = env["MessageKey"];
变量不存在。如何使用C#中的环境变量从子进程向父进程发送消息?
答案 0 :(得分:2)
Environment.SetEnvironmentVariable创建,修改或删除存储在当前进程或为当前用户或本地计算机保留的Windows操作系统注册表项中的环境变量。 SetEnvironmentVariable(String, String,EnvironmentVariableTarget)
方法允许您定义一个环境变量,该变量可供机器上运行的所有进程(EnvironmentVariableTarget.Machine值),用户运行的所有进程(EnvironmentVariableTarget.User值)或者当前进程(进程值)。每个机器和每个用户的环境变量被复制到当前进程的环境块中。但是,当前进程环境块所特有的环境变量只会持续到进程结束。
Environment.GetEnvironmentVariable从当前进程或当前用户或本地计算机的Windows操作系统注册表项中检索环境变量的值。
EnvironmentVariableTarget指定在set或get操作中存储或检索环境变量的位置。
所以你可以使用
Environment.SetEnvironmentVariable("MessageKey", "MessageValue", EnvironmentVariableTarget.Machine);
和
Environment.GetEnvironmentVariable("MessageKey", EnvironmentVariableTarget.Machine);