2015-05-18 76 views
0

我創建了一個新的環境變量來跟蹤可能的故障狀態的狀態,該變量是一個簡單的標誌,稱爲FailFlag,可以設置或重置,值分別爲FlagIsSetFlagIsReset 。要創建環境變量,我從控制面板中打開系統環境變量,並添加一個名爲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"); 
     } 
    } 
} 

但是,如果我跑我的程序,然後再次檢查我的系統環境變量,我看到FailFlagFlagIsReset而不是FlagIsSet,這意味着我的程序未能更新其價值。你能幫我解決一下嗎?

FWIW,我開始的Visual Studio 作爲管理員

回答

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如果你想要一個不同的存儲範圍

+2

@StraightLine *如果您需要不同的存儲範圍,請嘗試使用不同的environmentvariabletarget枚舉* –

1

環境是一種遺傳複製父進程的環境。你不能以你想要的方式修改全球環境。