C# 可以读取但不能更新新创建的环境变量
我创建了一个新的环境变量来跟踪可能故障条件的状态,该变量是一个名为C# 可以读取但不能更新新创建的环境变量,c#,.net,wpf,environment-variables,C#,.net,Wpf,Environment Variables,我创建了一个新的环境变量来跟踪可能故障条件的状态,该变量是一个名为FailFlag的简单标志,可以设置或重置,其值分别为FlagIsSet和FlagIsSet。为了创建环境变量,我从控制面板打开了系统环境变量,添加了一个名为FailFlag的新系统变量,并将其赋值为FlagIsReset 现在,我想通过编程设置和重置我的C#程序中的标志。我的尝试如下: namespace EnvVars { class Program { static void Main(str
FailFlag
的简单标志,可以设置或重置,其值分别为FlagIsSet
和FlagIsSet
。为了创建环境变量,我从控制面板打开了系统环境变量,添加了一个名为FailFlag
的新系统变量,并将其赋值为FlagIsReset
现在,我想通过编程设置和重置我的C#程序中的标志。我的尝试如下:
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
,而不是FlagIsSet
,这意味着我的程序无法更新其值。你能给我一个建议吗
FWIW,我以管理员的身份创建了Visual Studio
既然SetEnvironmentVariable
重载的范围是进程,那么您期望的是什么
如果需要不同的存储范围,请尝试不同的存储范围
既然SetEnvironmentVariable
重载的范围是进程,那么您期望的是什么
如果需要不同的存储范围,请尝试其他存储范围。该环境是父进程环境的继承副本。您不能以您尝试的方式修改全局环境。该环境是父进程环境的继承副本。您不能以您尝试的方式修改全局环境。@StraightLine请尝试其他环境VariableTarget枚举(如果您需要其他存储)scope@StraightLine如果需要不同的存储范围,请尝试其他environmentvariabletarget枚举
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.