C#设置环境变量

本文关键字:环境变量 设置 | 更新日期: 2023-09-27 18:28:12

我在使用C#设置环境变量时遇到问题。

我需要在某些情况下修改一些环境变量。例如,我需要修改NDSRC变量。

我使用:

Environment.SetEnvironmentVariable("MY_VARIABLE", "value", EnvironmentVariableTarget.Machine);

这很好用。

接下来,我运行一些whitch使用变量的脚本。现在出现了一个问题,因为脚本看不到变量。

示例:使用设置路径变量(在末尾添加目录)

string path = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine) + ";c:''";
Environment.SetEnvironmentVariable("Path", path, EnvironmentVariableTarget.Machine);

打开windows命令行(开始->运行->cmd.exe)。

在命令行中键入cmd

系统找不到cmd.exe:"cmd"未被识别为内部或外部命令、可操作程序或批处理文件。

如果选中"Windows设置"->"环境变量","路径"将正确设置为新值。如果签入打开的命令提示符,也会设置它。

C#设置环境变量

不幸的是,在刷新环境变量之前,您需要重新启动进程。请参阅此MSDN文章。

通过设计,在流程启动时继承变量,然后保持固定。

然而,没有理由不定期读取相关的注册表项,并从中手动更新进程的环境变量。事实上,如果你追求最新的价值观,这是正确的做法。

基本上,注册表存储环境变量的模板,这就是您通过"Windows设置->环境变量"编辑的内容。当你这样做时,Windows会向所有感兴趣的各方广播一条消息。然后,任何此类方都可以从注册表中重新创建环境变量的副本。

然而,我不知道有任何现成的函数可以调用来执行这种重新创建,所以你可能必须自己编写。