如何使用C#中的环境变量从子进程向父进程发送消息?

时间:2017-01-03 02:41:35

标签: c# environment-variables

我使用Process.Start()从父进程启动子进程。在子进程中,我创建了新的变量调用

Environment.SetEnvironmentVariable("MessageKey", "MessageValue"); 退出子进程后,我想使用

从父进程读取上述变量
var env = childProcess.StartInfo.EnvironmentVariables;
string MessageValue = env["MessageKey"];

变量不存在。如何使用C#中的环境变量从子进程向父进程发送消息?

1 个答案:

答案 0 :(得分:2)

Environment.SetEnvironmentVariable创建,修改或删除存储在当前进程或为当前用户或本地计算机保留的Windows操作系统注册表项中的环境变量。 SetEnvironmentVariable(String, String,EnvironmentVariableTarget)方法允许您定义一个环境变量,该变量可供机器上运行的所有进程(EnvironmentVariableTarget.Machine值),用户运行的所有进程(EnvironmentVariableTarget.User值)或者当前进程(进程值)。每个机器和每个用户的环境变量被复制到当前进程的环境块中。但是,当前进程环境块所特有的环境变量只会持续到进程结束。

Environment.GetEnvironmentVariable从当前进程或当前用户或本地计算机的Windows操作系统注册表项中检索环境变量的值。

EnvironmentVariableTarget指定在set或get操作中存储或检索环境变量的位置。

  1. 计算机:从Windows操作系统注册表中的HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager \ Environment键存储或检索环境变量。
  2. 处理:从与当前进程关联的环境块中存储或检索环境变量。
  3. 用户:从Windows操作系统注册表中的HKEY_CURRENT_USER \ Environment键存储或检索环境变量。
  4. 所以你可以使用

    Environment.SetEnvironmentVariable("MessageKey", "MessageValue", EnvironmentVariableTarget.Machine);
    

    Environment.GetEnvironmentVariable("MessageKey", EnvironmentVariableTarget.Machine);