可以读取但不能更新新创建的环境变量

时间:2015-05-18 23:20:03

标签: c# .net wpf environment-variables

我创建了一个新的环境变量来跟踪可能的失败条件的状态,该变量是一个名为FailFlag的简单标志,可以设置或重置,值为FlagIsSet和{{1} } 分别。为了创建环境变量,我从控制面板中打开了系统环境变量,并添加了一个名为FlagIsReset的新系统变量,并为其赋值FailFlag

现在,我想以编程方式设置并重置C#程序中的标志。我尝试如下:

FlagIsReset

但是,如果我运行我的程序然后再次检查我的系统环境变量,我发现namespace EnvVars { class Program { static void Main(string[] args) { string value = Environment.GetEnvironmentVariable("FailFlag"); // Here value is seen to be 'FlagIsReset' if (value == null) System.Console.WriteLine("Failed to read env variable"); else Environment.SetEnvironmentVariable("FailFlag", "FlagIsSet"); } } } FailFlag而不是FlagIsReset,这意味着我的程序无法更新它的价值。你能建议我修理一下吗?

FWIW,我以管理员身份启动了Visual Studio

2 个答案:

答案 0 :(得分:3)

Environment.SetEnvironmentVariable

Public method Static member     SetEnvironmentVariable(String, String)  //Creates, modifies, or deletes an environment variable stored in the current process.
Public method Static member     SetEnvironmentVariable(String, String, EnvironmentVariableTarget)   //Creates, modifies, or deletes an environment variable stored in the current process or in the Windows operating system registry key reserved for the current user or local machine.

由于SetEnvironmentVariable的重载范围是过程,您期望得到什么?

如果您想要不同的存储空间,请尝试使用其他environmentvariabletarget Enumeration

答案 1 :(得分:1)

环境是父进程环境的继承副本。您无法以您尝试的方式修改全局环境。