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);
Я мог бы обновить переменную среды, используя следующее
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