首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#设置环境变量

C#设置环境变量
EN

Stack Overflow用户
提问于 2012-03-20 00:53:28
回答 2查看 61.1K关注 0票数 18

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

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

我使用:

代码语言:javascript
复制
Environment.SetEnvironmentVariable("MY_VARIABLE", "value", EnvironmentVariableTarget.Machine);

这可以很好地工作。

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

示例:使用以下命令设置Path变量(在末尾添加一个目录

代码语言:javascript
复制
string path = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine) + ";c:\\";
Environment.SetEnvironmentVariable("Path", path, EnvironmentVariableTarget.Machine);

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

在命令行中键入cmd

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

如果您检查Windows设置->环境变量,则Path被正确设置为新值。如果检入打开的命令提示符,则也会对其进行设置。

EN

回答 2

Stack Overflow用户

发布于 2012-03-20 00:55:39

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

票数 7
EN

Stack Overflow用户

发布于 2012-03-20 01:23:41

根据设计,这些变量在进程启动时继承,并在此之后保持不变。

但是,您没有理由不能定期读取相关的注册表项,并从中手动更新进程的环境变量。实际上,如果您追求的是最新的值,那么这就是the right thing to do

基本上,注册表存储了环境变量的模板,这是您通过"Windows设置->环境变量“编辑的模板。当您这样做时,Windows会向所有相关方广播一条消息。然后,任何这样的参与方都可以从注册表重新创建它们的环境变量副本。

但是,我不知道有什么现成的函数可以调用来执行这种重新创建,所以您可能必须编写自己的函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9774358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档