Leer en inglés

Compartir a través de


EnvironmentVariableTarget Enumeración

Definición

Especifica la ubicación donde se almacena una variable de entorno o de donde se recupera en una operación Set o Get.

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

Campos

Machine 2

La variable de entorno se almacena o recupera de la clave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment del Registro del sistema operativo Windows. Este valor debe usarse en implementaciones de .NET que se ejecuten exclusivamente en sistemas Windows.

Process 0

La variable de entorno se almacena o recupera del bloque de entorno asociado al proceso actual.

User 1

La variable de entorno se almacena o recupera de la clave HKEY_CURRENT_USER\Environment del Registro del sistema operativo Windows. Este valor debe usarse en implementaciones de .NET que se ejecuten exclusivamente en sistemas Windows.

Ejemplos

En el ejemplo siguiente se usa la EnvironmentVariableTarget enumeración en métodos que crean, recuperan y eliminan variables de entorno. La salida del ejemplo muestra que las variables environmnent almacenadas y recuperadas sin especificar un EnvironmentVariableTarget valor se almacenan en el bloque de entorno asociado al proceso actual (EnvironmentVariableTarget.Process). La salida de ejemplo de los sistemas basados en Unix también muestra que se intenta definir una variable de entorno con un valor distinto EnvironmentVariableTarget.Process de se omite.

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...

Comentarios

La EnvironmentVariableTarget enumeración se usa en determinadas sobrecargas de los Environment.SetEnvironmentVariablemétodos , Environment.GetEnvironmentVariabley Environment.GetEnvironmentVariables para especificar la ubicación, o destino, donde se almacena o recupera el nombre y el valor de una variable de entorno.

El destino puede ser una de estas tres ubicaciones:

  • Bloque de entorno asociado al proceso actual (EnvironmentVariableTarget.Process).

    El usuario crea la variable de entorno en una operación set. Cuando finaliza el proceso, el sistema operativo destruye la variable de entorno en ese proceso.

  • La Windows clave del Registro del sistema operativo reservada para las variables de entorno asociadas al usuario actual (EnvironmentVariableTarget.User).

    En Windows sistemas, cuando el usuario crea la variable de entorno en una operación set, el sistema operativo almacena la variable de entorno en el registro del sistema, pero no en el proceso actual. Si el usuario inicia un nuevo proceso, el sistema operativo copia la variable de entorno del Registro en ese proceso. Cuando finaliza el proceso, el sistema operativo destruye la variable de entorno en ese proceso. Sin embargo, la variable de entorno del Registro persiste hasta que el usuario la quita mediante programación o mediante una herramienta de sistema operativo.

    En sistemas basados en Unix, un intento de crear una variable de entorno sin EnvironmentVariable.User ningún efecto y un intento de recuperar una variable de entorno mediante EnvironmentVariable.User devoluciones null (en C#) o Nothing (en Visual Basic).

  • Clave del Registro reservada para variables de entorno asociadas a todos los usuarios del equipo local (EnvironmentVariableTarget.Machine).

    Cuando un usuario crea la variable de entorno en una operación set, el sistema operativo almacena la variable de entorno en el registro del sistema, pero no en el proceso actual. Si algún usuario del equipo local inicia un nuevo proceso, el sistema operativo copia la variable de entorno del Registro en ese proceso. Cuando finaliza el proceso, el sistema operativo destruye la variable de entorno en ese proceso. Sin embargo, la variable de entorno del Registro persiste hasta que un usuario la quita mediante programación o mediante una herramienta de sistema operativo.

    En sistemas basados en Unix, un intento de crear una variable de entorno sin EnvironmentVariable.Machine ningún efecto y un intento de recuperar una variable de entorno mediante EnvironmentVariable.Machine devoluciones null (en C#) o Nothing (en Visual Basic).

Se aplica a

Producto Versiones
.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