Как получить и установить переменные окружения в C #? - PullRequest
165 голосов
/ 09 октября 2008

Как получить переменные окружения и, если чего-то не хватает, установить значение?

Ответы [ 6 ]

229 голосов
/ 09 октября 2008

Используйте класс System.Environment .

Методы

var value = System.Environment.GetEnvironmentVariable(variable [, Target])

и

System.Environment.SetEnvironmentVariable(variable, value [, Target])

сделает всю работу за вас.

Необязательный параметр Target - это перечисление типа EnvironmentVariableTarget, которое может быть одним из: Machine, Process или User. Если вы его опустите, целью по умолчанию будет текущий процесс .

30 голосов
/ 23 марта 2012

Я столкнулся с этим, работая над консольным приложением .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);

Сработало как шарм для меня.

11 голосов
/ 04 мая 2010

Это будет работать для переменной среды, которая является настройкой машины. Для пользователей просто измените на пользователя.

String EnvironmentPath = System.Environment
                .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
7 голосов
/ 11 июня 2013

Получить и установить

Получить

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

Установить

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
6 голосов
/ 01 августа 2012
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
1 голос
/ 25 августа 2016

Я мог бы обновить переменную среды, используя следующую команду:

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);
...