我创建了一个新的环境变量来跟踪可能的失败条件的状态,该变量是一个名为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
答案 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)
环境是父进程环境的继承副本。您无法以您尝试的方式修改全局环境。