2008-10-08 117 views

回答

192

使用System.Environment類。

的方法

System.Environment.GetEnvironmentVariable() 

System.Environment.SetEnvironmentVariable() 

會爲你做這項工作。

+33

還要注意可選的第三個參數: System.Environment.SetEnvironmentVariable(變量,值,** EnvironmentVariableTarget **) 可能的值爲:*機器*,*過程*和*用戶* – 2011-02-13 12:45:27

+1

不` EnvironmentVariableTarget.Machine`需要管理員訪問權限? – checksum 2014-02-11 06:45:22

+0

是的,它的確如此。試圖運行沒有將導致一個明顯的例外。 – 2015-05-13 04:19:18

8

這將適用於機器設置的環境變量。對於用戶,只需改爲用戶。

String EnvironmentPath = System.Environment 
       .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine); 
30

我就遇到了這個,同時在.NET控制檯應用程序的工作來讀取PATH環境變量,並發現使用System.Environment.GetEnvironmentVariable會自動展開的環境變量。

我不希望發生這種情況......這意味着路徑中的文件夾如'%SystemRoot%\ system32'被重寫爲'C:\ Windows \ system32'。爲了得到未擴展的路徑,我不得不使用這個:

string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\"; 
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames); 

工作就像一個魅力對我來說。

6
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User); 
6

獲取和設置

獲取

string getEnv = Environment.GetEnvironmentVariable("envVar"); 

設置

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv); 
0

我可能能夠通過使用以下

更新環境變量
string EnvPath = System.Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine) ?? string.Empty; 
if (!string.IsNullOrEmpty(EnvPath) && !EnvPath .EndsWith(";")) 
    EnvPath = EnvPath + ';'; 
EnvPath = EnvPath + @"C:\Test"; 
Environment.SetEnvironmentVariable("PATH", EnvPath , EnvironmentVariableTarget.Machine);