c# - 如何在 C# 中使用环境变量将消息从子进程发送到父进程?

标签 c# environment-variables

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

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

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

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

最佳答案

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

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

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

  1. 机器:环境变量存储在 Windows 操作系统注册表中的 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 项中或从中检索。
  2. 进程:环境变量存储在与当前进程关联的环境 block 中或从中检索。
  3. 用户:环境变量存储在 Windows 操作系统注册表中的 HKEY_CURRENT_USER\Environment 键中或从中检索。

所以你可以使用

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

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

关于c# - 如何在 C# 中使用环境变量将消息从子进程发送到父进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41435687/

相关文章:

C# 类型对象作为 Post 方法的有效负载

c# - 客户端发送 SOAP 请求并接收响应

c# - 将文件从控制台应用程序上传到 WebAPI

node.js - digital ocean 水滴中的环境变量

java - jar 文件无法正常工作 java.lang.NoClassDefFoundError

c# - 跳跃和记住跳跃时间的问题

c# - C# 中的适当柯里化(Currying)

linux - 如何更改配置脚本的临时目录?

linux - 如果尚未设置,请将环境变量设置为父目录

Flutter:使构建时环境变量可用于代码