Как я могу получить переменные Environnment и если что-то не хватает, установите значение?
Как получить и установить переменные среды в С#?
Ответ 1
Используйте класс System.Environment.
Методы
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
а также
System.Environment.SetEnvironmentVariable(variable, value [, Target])
сделает работу за вас.
Необязательный параметр Target
представляет собой перечисление типа EnvironmentVariableTarget
и он может быть одним из: Machine
, Process
или User
. Если вы его опустите, целью по умолчанию будет текущий процесс.
Ответ 2
Я столкнулся с этим, работая над консольным приложением .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);
Работала как прелесть для меня.
Ответ 3
Это будет работать для переменной среды, которая является установкой машины. Для пользователей просто измените на пользователя.
String EnvironmentPath = System.Environment
.GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
Ответ 4
Получить и установить
Получить
string getEnv = Environment.GetEnvironmentVariable("envVar");
Задавать
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
Ответ 5
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
Ответ 6
Я мог бы обновить переменную окружения, используя следующие
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);