2015-09-18 130 views
0

我有Windows 7和我使用此代碼:爲什麼環境變量不變?

 string genericLib = ConfigurationManager.AppSettings["GenericLib"]; 
     if (!string.IsNullOrEmpty(genericLib)) 
     { 
      string path = Environment.GetEnvironmentVariable("Path"); 

      if (path != null && !path.Contains(genericLib)) 
      { 
       path = genericLib + ";" + path; 
       Environment.SetEnvironmentVariable("path", path); 
      } 

      string new_path = Environment.GetEnvironmentVariable("Path"); 
     } 

調試器顯示我,new_path變量確實包含了我增添了新的路徑。但下次我執行這段代碼時,添加的路徑不再存在。

是否有人知道這是爲什麼?

+2

這是非常直接從['Environment.SetEnvironmentVariable'(https://msdn.microsoft.com/en-us/library/system重載的描述總結回答。 environment.setenvironmentvariable(v = vs.110)的.aspx)。 – hvd

+0

@hvd:謝謝 – walruz

回答

1

該方法的documentation說(重點煤礦):

創建,修改或刪除存儲在當前進程的環境變量。

所以要更改環境變量只有進程。使用this overload代替:

Environment.SetEnvironmentVariable("path", path, EnvironmentVariableTarget.Machine);