Ler em inglês

Compartilhar via


EnvironmentVariableTarget Enumeração

Definição

Especifica o local em que uma variável de ambiente é armazenada ou recuperada em uma operação set ou get.

C#
public enum EnvironmentVariableTarget
C#
[System.Runtime.InteropServices.ComVisible(true)]
public enum EnvironmentVariableTarget
Herança
EnvironmentVariableTarget
Atributos

Campos

Machine 2

A variável de ambiente é armazenada ou recuperada da chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment no Registro do sistema operacional Windows. Esse valor deve ser usado em implementações do .NET em execução apenas em sistemas do Windows.

Process 0

A variável de ambiente é armazenada ou recuperada do bloco de ambiente associado ao processo atual.

User 1

A variável de ambiente é armazenada ou recuperada da chave HKEY_CURRENT_USER\Environment no Registro do sistema operacional Windows. Esse valor deve ser usado em implementações do .NET em execução apenas em sistemas do Windows.

Exemplos

O exemplo a seguir usa a EnvironmentVariableTarget enumeração em métodos que criam, recuperam e excluem variáveis de ambiente. A saída do exemplo mostra que as variáveis de ambiente armazenadas e recuperadas sem especificar um EnvironmentVariableTarget valor são armazenadas no bloco de ambiente associado ao processo atual (EnvironmentVariableTarget.Process). A saída de exemplo de sistemas baseados em Unix também mostra que as tentativas de definir uma variável de ambiente com um valor diferente de EnvironmentVariableTarget.Process é ignorada.

C#
using System;
using System.Collections;
using Microsoft.Win32;

class Sample
{
    public static void Main()
    {
        // Environment variable names for default, process, user, and machine targets.
        string defaultEnvVar = nameof(defaultEnvVar);
        string processEnvVar = nameof(processEnvVar);
        string userEnvVar = nameof(userEnvVar);
        string machineEnvVar = nameof(machineEnvVar);

        string dft = nameof(dft);
        string process = nameof(process);
        string user = nameof(user);
        string machine = nameof(machine);

        // Set the environment variable for each target.
        Console.WriteLine("Setting environment variables for each target...\n");
        // The default target (the current process).
        Environment.SetEnvironmentVariable(defaultEnvVar, dft);
        // The current process.
        Environment.SetEnvironmentVariable(processEnvVar, process,
                                           EnvironmentVariableTarget.Process);
        // The current user.
        Environment.SetEnvironmentVariable(userEnvVar, user,
                                           EnvironmentVariableTarget.User);
        // The local machine.
        Environment.SetEnvironmentVariable(machineEnvVar, machine,
                                           EnvironmentVariableTarget.Machine);

        // Define an array of environment variables.
        string[] envVars = { defaultEnvVar,processEnvVar, userEnvVar, machineEnvVar };

        // Try to get the environment variables from each target.
        // The default (no specified target).
        Console.WriteLine("Retrieving environment variables from the default target:");
        foreach (var envVar in envVars)
        {
          var value = Environment.GetEnvironmentVariable(envVar) ?? "(none)";
          Console.WriteLine($"   {envVar}: {value}");
        }
        // The process block.
        Console.WriteLine("\nRetrieving environment variables from the Process target:");
        foreach (var envVar in envVars)
        {
          var value = Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.Process) ?? "(none)";
          Console.WriteLine($"   {envVar}: {value}");
        }
        // The user block.
        Console.WriteLine("\nRetrieving environment variables from the User target:");
        foreach (var envVar in envVars)
        {
          var value = Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.User) ?? "(none)";
          Console.WriteLine($"   {envVar}: {value}");
        }
        // The machine block.
        Console.WriteLine("\nRetrieving environment variables from the Machine target:");
        foreach (var envVar in envVars)
        {
          var value = Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.Machine) ?? "(none)";
          Console.WriteLine($"   {envVar}: {value}");
        }

        // Delete the environment variable for each target.
        Console.WriteLine("\nDeleting environment variables for each target...\n");
        // The default target (the current process).
        Environment.SetEnvironmentVariable(defaultEnvVar, null);
        // The current process.
        Environment.SetEnvironmentVariable(processEnvVar, null,
                                           EnvironmentVariableTarget.Process);
        // The current user.
        Environment.SetEnvironmentVariable(userEnvVar, null,
                                           EnvironmentVariableTarget.User);
        // The local machine.
        Environment.SetEnvironmentVariable(machineEnvVar, null,
                                           EnvironmentVariableTarget.Machine);
    }
}
// The example displays the following output if run on a Windows system:
//      Setting environment variables for each target...
//
//      Retrieving environment variables from the default target:
//        defaultEnvVar: dft
//        processEnvVar: process
//        userEnvVar: user
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the Process target:
//        defaultEnvVar: dft
//        processEnvVar: process
//        userEnvVar: user
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the User target:
//        defaultEnvVar: (none)
//        processEnvVar: (none)
//        userEnvVar: user
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the Machine target:
//        defaultEnvVar: (none)
//        processEnvVar: (none)
//        userEnvVar: (none)
//        machineEnvVar: machine
//
//      Deleting environment variables for each target...
//
// The example displays the following output if run on a Unix-based system:
//
//      Setting environment variables for each target...
//
//      Retrieving environment variables from the default target:
//        defaultEnvVar: dft
//        processEnvVar: process
//        userEnvVar: (none)
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the Process target:
//        defaultEnvVar: dft
//        processEnvVar: process
//        userEnvVar: (none)
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the User target:
//        defaultEnvVar: (none)
//        processEnvVar: (none)
//        userEnvVar: (none)
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the Machine target:
//        defaultEnvVar: (none)
//        processEnvVar: (none)
//        userEnvVar: (none)
//        machineEnvVar: (none)
//
//      Deleting environment variables for each target...

Comentários

A EnvironmentVariableTarget enumeração é usada por determinadas sobrecargas do Environment.SetEnvironmentVariable, Environment.GetEnvironmentVariablee Environment.GetEnvironmentVariables métodos para especificar o local ou destino, em que o nome e o valor de uma variável de ambiente são armazenados ou recuperados.

O destino pode ser um dos três locais:

  • O bloco de ambiente associado ao processo atual (EnvironmentVariableTarget.Process).

    O usuário cria a variável de ambiente em uma operação definida. Quando o processo é encerrado, o sistema operacional destrói a variável de ambiente nesse processo.

  • O Windows chave do registro do sistema operacional reservada para variáveis de ambiente associadas ao usuário atual (EnvironmentVariableTarget.User).

    Em Windows sistemas, quando o usuário cria a variável de ambiente em uma operação definida, o sistema operacional armazena a variável de ambiente no registro do sistema, mas não no processo atual. Se o usuário iniciar um novo processo, o sistema operacional copiará a variável de ambiente do registro para esse processo. Quando o processo é encerrado, o sistema operacional destrói a variável de ambiente nesse processo. No entanto, a variável de ambiente no registro persiste até que o usuário a remova programaticamente ou por meio de uma ferramenta do sistema operacional.

    Em sistemas baseados em Unix, uma tentativa de criar uma variável de ambiente sem EnvironmentVariable.User efeito e uma tentativa de recuperar uma variável de ambiente usando EnvironmentVariable.User retornos null (em C#) ou Nothing (em Visual Basic).

  • A chave do Registro reservada para variáveis de ambiente associadas a todos os usuários no computador local (EnvironmentVariableTarget.Machine).

    Quando um usuário cria a variável de ambiente em uma operação definida, o sistema operacional armazena a variável de ambiente no registro do sistema, mas não no processo atual. Se qualquer usuário no computador local iniciar um novo processo, o sistema operacional copiará a variável de ambiente do Registro para esse processo. Quando o processo é encerrado, o sistema operacional destrói a variável de ambiente nesse processo. No entanto, a variável de ambiente no registro persiste até que um usuário a remova programaticamente ou por meio de uma ferramenta do sistema operacional.

    Em sistemas baseados em Unix, uma tentativa de criar uma variável de ambiente sem EnvironmentVariable.Machine efeito e uma tentativa de recuperar uma variável de ambiente usando EnvironmentVariable.Machine retornos null (em C#) ou Nothing (em Visual Basic).

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1