【发布时间】:2022-01-03 19:05:02
【问题描述】:
我已经看到了有关刷新 powershell 和 cmd 终端的各种帖子,但我不确定是否还有一种方法可以更新已经运行的进程(除了重新启动之外)的环境变量,它既不是 powershell 也不是 cmd .这些帖子都非常有助于帮助我了解幕后的工作原理:
https://superuser.com/questions/130029/refresh-environment-variable
https://www.michaelmiklis.de/update-environment-variables-in-current-process/
而这篇文章(同样的问题,但与 linux 相关)似乎表明 linux 中有一种方法:
Changing environment variable of a running process
我很好奇 Windows 中是否有类似的方法。我的假设是不,你必须重新启动,但我找不到明确的不。为什么我想这样做是因为我正在开发一个测试硬件的系统。顶级工具是能够调用各种代码模块(python、.net、.exes 等)的定序器。在这个顶级工具中,我调用了一个 python 模块,它期望设置一个特定的环境变量。但是,在扫描条形码之前,我不知道这个变量应该是什么。我编写了可以设置环境变量并检查是否设置了环境变量的 C# 代码,但是由于尚未使顶级进程意识到更改,因此 python 模块实际上不可能具有正确的变量值,除非在一切开始之前就已经知道了。
【问题讨论】:
-
在进程创建时在进程环境块中设置环境变量。一旦创建了流程,就没有支持的方式来更改它。如果您正在创建一个流程,您可以在调用
CreateProcess时提供自定义环境。 -
之前的评论部分错误:您可以在运行时更改进程的环境,可以是单个变量 (
SetEnvironmentVariable),也可以是整个环境变量集 (SetEnvironmentStrings)。您只能在进程内更改环境。
标签: windows operating-system environment-variables