我使用 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指定在设置或获取操作中存储或检索环境变量的位置。
- 机器:环境变量存储在 Windows 操作系统注册表中的 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 项中或从中检索。
- 进程:环境变量存储在与当前进程关联的环境 block 中或从中检索。
- 用户:环境变量存储在 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/