Методы System.Environment.GetEnvironmentVariable

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Метод GetEnvironmentVariable извлекает значение переменной среды из текущего процесса.

Имена переменных среды чувствительны к регистру в таких системах, как Unix, но не учитывает регистр в Windows.

Примечание.

Изменения среды внутри процесса, внесенные собственными библиотеками, не рассматриваются управляемыми вызывающими пользователями. И наоборот, такие изменения, внесенные управляемыми вызывающими пользователями, не видятся собственными библиотеками.

GetEnvironmentVariable(String)Метод

Метод GetEnvironmentVariable(String) извлекает переменную среды из блока среды только текущего процесса. Это эквивалентно вызову GetEnvironmentVariable(String, EnvironmentVariableTarget) метода со значением targetEnvironmentVariableTarget.Process.

Чтобы получить все переменные среды вместе со своими значениями, вызовите GetEnvironmentVariables метод.

В системах Windows

В системах Windows блок среды текущего процесса включает:

  • Все переменные среды, предоставляемые ей родительским процессом, создающим его. Например, приложение .NET, запущенное из окна консоли, наследует все переменные среды окна консоли.

    Если родительский процесс отсутствует, вместо этого используются переменные среды для каждого компьютера и каждого пользователя. Например, в новом окне консоли есть все переменные среды на компьютер и среду для каждого пользователя, определенные во время запуска.

  • Все переменные, добавленные в блок процесса во время выполнения процесса, вызывая SetEnvironmentVariable(String, String) метод или SetEnvironmentVariable(String, String, EnvironmentVariableTarget) метод со значением targetEnvironmentVariableTarget.Process. Эти переменные среды сохраняются до завершения работы приложения .NET.

Если переменные среды создаются после запуска процесса, этот метод можно использовать для получения только тех переменных, которые были созданы путем вызова SetEnvironmentVariable(String, String) метода или SetEnvironmentVariable(String, String, EnvironmentVariableTarget) метода со target значением .EnvironmentVariableTarget.Process.

В таких системах, как Unix

В таких системах unix блок среды текущего процесса включает следующие переменные среды:

  • Все переменные среды, предоставляемые ей родительским процессом, создающим его. Для приложений .NET, запущенных из оболочки, это включает все переменные среды, определенные в оболочке.

  • Все переменные, добавленные в блок процесса во время выполнения процесса, вызывая SetEnvironmentVariable(String, String) метод или SetEnvironmentVariable(String, String, EnvironmentVariableTarget) метод со значением targetEnvironmentVariableTarget.Process. Эти переменные среды сохраняются до завершения работы приложения .NET.

.NET в таких системах, как Unix, не поддерживает переменные среды на компьютер или на пользователя.

GetEnvironmentVariable(String, EnvironmentVariableTarget)Метод

Чтобы получить все переменные среды вместе со своими значениями, вызовите GetEnvironmentVariables метод.

В системах Windows

В Windows параметр указывает, target извлекается ли переменная среды из текущего процесса или из раздела реестра операционной системы Windows для текущего пользователя или локального компьютера. Все переменные среды для каждого пользователя и на компьютер автоматически копируются в блок среды текущего процесса, как и любые другие переменные среды, доступные родительскому процессу, создавшего процесс .NET. Однако переменные среды добавляются только в блок среды текущего процесса путем вызова SetEnvironmentVariable(String, String) метода или SetEnvironmentVariable(String, String, EnvironmentVariableTarget) метода со target значением EnvironmentVariableTarget.Process сохраняемого только в течение длительности процесса.

В таких системах, как Unix

В системах, таких как Unix, GetEnvironmentVariable(String, EnvironmentVariableTarget) метод поддерживает target только значение EnvironmentVariableTarget.Process . Вызовы со значением EnvironmentVariableTarget.Machinetarget или EnvironmentVariableTarget.User не поддерживаются и возвращаютсяnull.

Переменные среды для каждого процесса: