Как получить и установить переменные среды в C#?



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

1643   6  

6 ответов:

использовать

я столкнулся с этим во время работы над консольным приложением .NET, чтобы прочитать переменную среды PATH, и обнаружил, что с помощью System.Окружающая среда.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);

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

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

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

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

Get

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

Set

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);

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

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

Comments

    Ничего не найдено.