Поделиться через


Методы System.Environment.GetEnvironmentVariable

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

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

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

Замечание

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

GetEnvironmentVariable(String)Метод

Метод GetEnvironmentVariable(String) извлекает переменную среды из блока среды только текущего процесса. Это эквивалентно вызову метода GetEnvironmentVariable(String, EnvironmentVariableTarget) с target значением EnvironmentVariableTarget.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) поддерживает только значение targetEnvironmentVariableTarget.Process. Вызовы со значением target, EnvironmentVariableTarget.Machine или EnvironmentVariableTarget.User не поддерживаются и возвращают null.

Переменные среды, относящиеся к конкретным процессам: