Environment.SetEnvironmentVariable Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Crea, modifica o elimina una variable de entorno.
Sobrecargas
SetEnvironmentVariable(String, String) |
Crea, modifica o elimina una variable de entorno almacenada en el proceso actual. |
SetEnvironmentVariable(String, String, EnvironmentVariableTarget) |
Crea, modifica o elimina una variable de entorno almacenada en el proceso actual o en la clave del Registro del sistema operativo Windows reservada para el usuario actual o la máquina local. |
SetEnvironmentVariable(String, String)
- Source:
- Environment.cs
- Source:
- Environment.cs
- Source:
- Environment.cs
Crea, modifica o elimina una variable de entorno almacenada en el proceso actual.
public:
static void SetEnvironmentVariable(System::String ^ variable, System::String ^ value);
public static void SetEnvironmentVariable (string variable, string value);
public static void SetEnvironmentVariable (string variable, string? value);
static member SetEnvironmentVariable : string * string -> unit
Public Shared Sub SetEnvironmentVariable (variable As String, value As String)
Parámetros
- variable
- String
Nombre de una variable de entorno.
- value
- String
Valor que se va a asignar a variable
.
Excepciones
variable
es null
.
variable
contiene una cadena de longitud cero, un carácter cero hexadecimal inicial (0x00) o un signo igual ("=").
-o-
La longitud de variable
o value
es mayor o igual que 32 767 caracteres.
-o-
Error durante la ejecución de esta operación.
El autor de la llamada no tiene el permiso necesario para realizar esta operación.
Ejemplos
En el ejemplo siguiente se intenta recuperar el valor de una variable de entorno denominada Test1
del bloque de entorno de proceso. Si la variable no existe, el ejemplo crea la variable y recupera su valor. En el ejemplo se muestra el valor de la variable. En el caso de las implementaciones de .NET que se ejecutan en sistemas Windows, también llama al método GetEnvironmentVariables(EnvironmentVariableTarget) con cada miembro de la enumeración EnvironmentVariableTarget para establecer que la variable solo se puede recuperar del bloque de entorno de proceso actual. (Las implementaciones de .NET en sistemas similares a Unix solo admiten variables en el bloque de entorno de proceso). Por último, si el ejemplo creó la variable, la elimina.
using System;
public class Example
{
public static void Main()
{
string value;
bool toDelete = false;
// Check whether the environment variable exists.
value = Environment.GetEnvironmentVariable("Test1");
// If necessary, create it.
if (value == null)
{
Environment.SetEnvironmentVariable("Test1", "Value1");
toDelete = true;
// Now retrieve it.
value = Environment.GetEnvironmentVariable("Test1");
}
// Display the value.
Console.WriteLine($"Test1: {value}\n");
// Confirm that the value can only be retrieved from the process
// environment block if running on a Windows system.
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
Console.WriteLine("Attempting to retrieve Test1 from:");
foreach (EnvironmentVariableTarget enumValue in
Enum.GetValues(typeof(EnvironmentVariableTarget))) {
value = Environment.GetEnvironmentVariable("Test1", enumValue);
Console.WriteLine($" {enumValue}: {(value != null ? "found" : "not found")}");
}
Console.WriteLine();
}
// If we've created it, now delete it.
if (toDelete) {
Environment.SetEnvironmentVariable("Test1", null);
// Confirm the deletion.
if (Environment.GetEnvironmentVariable("Test1") == null)
Console.WriteLine("Test1 has been deleted.");
}
}
}
// The example displays the following output if run on a Windows system:
// Test1: Value1
//
// Attempting to retrieve Test1 from:
// Process: found
// User: not found
// Machine: not found
//
// Test1 has been deleted.
//
// The example displays the following output if run on a Unix-based system:
// Test1: Value1
//
// Test1 has been deleted.
module Example
open System
let mutable toDelete = false
// Check whether the environment variable exists.
let value =
let v = Environment.GetEnvironmentVariable "Test1"
// If necessary, create it.
if isNull v then
Environment.SetEnvironmentVariable("Test1", "Value1")
toDelete <- true
Environment.GetEnvironmentVariable "Test1"
else
v
// Display the value.
printfn $"Test1: {value}\n"
// Confirm that the value can only be retrieved from the process
// environment block if running on a Windows system.
if Environment.OSVersion.Platform = PlatformID.Win32NT then
printfn "Attempting to retrieve Test1 from:"
for enumValue in Enum.GetValues typeof<EnvironmentVariableTarget> do
let value = Environment.GetEnvironmentVariable("Test1", enumValue :?> EnvironmentVariableTarget)
printfn $""" {enumValue}: {if value <> null then "found" else "not found"}"""
printfn ""
// If we've created it, now delete it.
if toDelete then
Environment.SetEnvironmentVariable("Test1", null)
// Confirm the deletion.
if Environment.GetEnvironmentVariable "Test1" |> isNull then
printfn "Test1 has been deleted."
// The example displays the following output if run on a Windows system:
// Test1: Value1
//
// Attempting to retrieve Test1 from:
// Process: found
// User: not found
// Machine: not found
//
// Test1 has been deleted.
//
// The example displays the following output if run on a Unix-based system:
// Test1: Value1
//
// Test1 has been deleted.
Module Example
Public Sub Main()
Dim value As String
Dim toDelete As Boolean = False
' Check whether the environment variable exists.
value = Environment.GetEnvironmentVariable("Test1")
' If necessary, create it.
If value Is Nothing Then
Environment.SetEnvironmentVariable("Test1", "Value1")
toDelete = True
' Now retrieve it.
value = Environment.GetEnvironmentVariable("Test1")
End If
' Display the value.
Console.WriteLine($"Test1: {value}")
Console.WriteLine()
' Confirm that the value can only be retrieved from the process
' environment block if running on a Windows system.
If Environment.OSVersion.Platform = PlatformID.Win32NT Then
Console.WriteLine("Attempting to retrieve Test1 from:")
For Each enumValue As EnvironmentVariableTarget In
[Enum].GetValues(GetType(EnvironmentVariableTarget))
value = Environment.GetEnvironmentVariable("Test1", enumValue)
Console.WriteLine($" {enumValue}: {If(value IsNot Nothing, "found", "not found")}")
Next
Console.WriteLine()
End If
' If we've created it, now delete it.
If toDelete Then
Environment.SetEnvironmentVariable("Test1", Nothing)
' Confirm the deletion.
If Environment.GetEnvironmentVariable("Test1") = Nothing Then
Console.WriteLine("Test1 has been deleted.")
End If
End If
End Sub
End Module
' The example displays the following output if run on a Windows system:
' Test1: Value1
'
' Attempting to retrieve Test1 from:
' Process: found
' User: not found
' Machine: not found
'
' Test1 has been deleted.
'
' The example displays the following output if run on a Unix-based system:
' Test1: Value1
'
' Test1 has been deleted.
Comentarios
Llamar a este método equivale a llamar a la sobrecarga de SetEnvironmentVariable(String, String, EnvironmentVariableTarget) con un valor de EnvironmentVariableTarget.Process para el argumento target
.
En sistemas similares a Unix, las llamadas al método SetEnvironmentVariable(String, String) no tienen ningún efecto en las bibliotecas nativas que sean o se cargarán. (Por el contrario, los autores de llamadas administrados no ven las modificaciones del entorno en proceso realizadas por las bibliotecas nativas).
Si el argumento value
no es null
y la variable de entorno denominada por el parámetro variable
no existe, la variable de entorno se crea y se asigna el contenido de value
. Si existe, se modifica su valor. Dado que la variable de entorno se define en el bloque de entorno del proceso actual solo, no se conserva después de que el proceso haya finalizado.
Si variable
contiene un carácter cero hexadecimal no inicial, los caracteres anteriores a cero se consideran el nombre de la variable de entorno y se omiten todos los caracteres posteriores.
Si value
contiene un carácter cero hexadecimal no inicial, los caracteres anteriores a cero se asignan a la variable de entorno y se omiten todos los caracteres posteriores.
Si value
está null
(o está vacío en versiones anteriores a .NET 9) y la variable de entorno denominada por variable
existe, se elimina la variable de entorno. Si variable
no existe, no se produce ningún error aunque no se pueda realizar la operación.
value
se considera vacío en cualquiera de las condiciones siguientes:
- Es String.Empty.
- Consta de un solo carácter cuyo valor es U+0000.
Consulte también
Se aplica a
SetEnvironmentVariable(String, String, EnvironmentVariableTarget)
- Source:
- Environment.cs
- Source:
- Environment.cs
- Source:
- Environment.cs
Crea, modifica o elimina una variable de entorno almacenada en el proceso actual o en la clave del Registro del sistema operativo Windows reservada para el usuario actual o la máquina local.
public:
static void SetEnvironmentVariable(System::String ^ variable, System::String ^ value, EnvironmentVariableTarget target);
public static void SetEnvironmentVariable (string variable, string? value, EnvironmentVariableTarget target);
public static void SetEnvironmentVariable (string variable, string value, EnvironmentVariableTarget target);
static member SetEnvironmentVariable : string * string * EnvironmentVariableTarget -> unit
Public Shared Sub SetEnvironmentVariable (variable As String, value As String, target As EnvironmentVariableTarget)
Parámetros
- variable
- String
Nombre de una variable de entorno.
- value
- String
Valor que se va a asignar a variable
.
- target
- EnvironmentVariableTarget
Uno de los valores de enumeración que especifica la ubicación de la variable de entorno.
Excepciones
variable
es null
.
variable
contiene una cadena de longitud cero, un carácter cero hexadecimal inicial (0x00) o un signo igual ("=").
-o-
La longitud de variable
es mayor o igual que 32 767 caracteres.
-o-
target
no es miembro de la enumeración EnvironmentVariableTarget.
-o-
target
es Machine o User, y la longitud de variable
es mayor o igual que 255.
-o-
target
es Process y la longitud de value
es mayor o igual que 32 767 caracteres.
-o-
Error durante la ejecución de esta operación.
El autor de la llamada no tiene el permiso necesario para realizar esta operación.
Ejemplos
En el ejemplo siguiente se crean variables de entorno para los destinos de EnvironmentVariableTarget.Process, EnvironmentVariableTarget.Usery Machine, se comprueba si el registro del sistema operativo contiene las variables de entorno de usuario y máquina y, a continuación, elimina las variables de entorno. Dado que .NET en sistemas similares a Unix no admite variables de entorno por usuario y por máquina, solo SetEnvironmentVariable(String, String) y SetEnvironmentVariable(String, String, EnvironmentVariableTarget) con un valor de EnvironmentVariableTarget.Process almacenar correctamente una variable de entorno en el bloque de entorno de proceso.
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...
module Sample
open System
// Environment variable names for default, process, user, and machine targets.
let rec defaultEnvVar = nameof defaultEnvVar
let rec processEnvVar = nameof processEnvVar
let rec userEnvVar = nameof userEnvVar
let rec machineEnvVar = nameof machineEnvVar
let rec dft = nameof dft
let rec proc = nameof proc
let rec user = nameof user
let rec machine = nameof machine
// Set the environment variable for each target.
printfn "Setting environment variables for each target...\n"
// The default target (the current process).
Environment.SetEnvironmentVariable(defaultEnvVar, dft)
// The current process.
Environment.SetEnvironmentVariable(processEnvVar, proc, EnvironmentVariableTarget.Process)
// The current user.
Environment.SetEnvironmentVariable(userEnvVar, user, EnvironmentVariableTarget.User)
// The local machine.
Environment.SetEnvironmentVariable(machineEnvVar, machine, EnvironmentVariableTarget.Machine)
// Define a list of environment variables.
let envVars = [ defaultEnvVar; processEnvVar; userEnvVar; machineEnvVar ]
// Try to get the environment variables from each target.
// The default (no specified target).
printfn "Retrieving environment variables from the default target:"
for envVar in envVars do
let value =
match Environment.GetEnvironmentVariable envVar with
| null -> "(none)"
| v -> v
printfn $" {envVar}: {value}"
// The process block.
printfn "\nRetrieving environment variables from the Process target:"
for envVar in envVars do
let value =
match Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.Process) with
| null -> "(none)"
| v -> v
printfn $" {envVar}: {value}"
// The user block.
printfn "\nRetrieving environment variables from the User target:"
for envVar in envVars do
let value =
match Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.User) with
| null -> "(none)"
| v -> v
printfn $" {envVar}: {value}"
// The machine block.
printfn "\nRetrieving environment variables from the Machine target:"
for envVar in envVars do
let value =
match Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.Machine) with
| null -> "(none)"
| v -> v
printfn $" {envVar}: {value}"
// Delete the environment variable for each target.
printfn "\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...
Imports System.Collections
Imports Microsoft.Win32
Module Sample
Public Sub Main()
' Environment variable names for default, process, user, and machine targets.
Dim defaultEnvVar As String = NameOf(defaultEnvVar)
Dim processEnvVar As String = NameOf(processEnvVar)
Dim userEnvVar As String = NameOf(userEnvVar)
Dim machineEnvVar As String = NameOf(machineEnvVar)
Dim dft As String = NameOf(dft)
Dim process As String = NameOf(process)
Dim user As String = NameOf(user)
Dim machine As String = NameOf(machine)
' Set the environment variable for each target.
Console.WriteLine("Setting environment variables for each target...")
' 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)
Console.WriteLine()
' Define an array of environment variables.
Dim envVars As String() = { 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:")
For Each envVar in envVars
Dim value = Environment.GetEnvironmentVariable(envVar)
Console.WriteLine($" {envVar}: {If(value IsNot Nothing, value, "(none)")}")
Next
Console.WriteLine()
' The process block.
Console.WriteLine("Retrieving environment variables from the Process target:")
For Each envVar in envVars
Dim value = Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.Process)
Console.WriteLine($" {envVar}: {If(value IsNot Nothing, value, "(none)")}")
Next
Console.WriteLine()
' The user block.
Console.WriteLine("Retrieving environment variables from the User target:")
For Each envVar in envVars
Dim value = Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.User)
Console.WriteLine($" {envVar}: {value}")
Next
Console.WriteLine()
' The machine block.
Console.WriteLine("Retrieving environment variables from the Machine target:")
For Each envVar in envVars
Dim value = Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.Machine)
Console.WriteLine($" {envVar}: {value}")
Next
Console.WriteLine()
' Delete the environment variable for each target.
Console.WriteLine("Deleting environment variables for each target...")
' The default target (the current process).
Environment.SetEnvironmentVariable(defaultEnvVar, Nothing)
' The current process.
Environment.SetEnvironmentVariable(processEnvVar, Nothing,
EnvironmentVariableTarget.Process)
' The current user.
Environment.SetEnvironmentVariable(userEnvVar, Nothing,
EnvironmentVariableTarget.User)
' The local machine.
Environment.SetEnvironmentVariable(machineEnvVar, Nothing,
EnvironmentVariableTarget.Machine)
End Sub
End Module
' 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
El método SetEnvironmentVariable(String, String, EnvironmentVariableTarget) permite definir una variable de entorno que esté disponible para el proceso actual (el valor de Process). Las variables de entorno que son únicas para el bloque de entorno de proceso actual solo se conservan hasta que finaliza el proceso.
Además, solo en los sistemas Windows, el método SetEnvironmentVariable(String, String, EnvironmentVariableTarget) permite definir una variable de entorno que esté disponible para todos los procesos que se ejecutan en un equipo (el valor de EnvironmentVariableTarget.Machine) y para todos los procesos ejecutados por un usuario (el valor EnvironmentVariableTarget.User). Las variables de entorno por máquina y por usuario se copian en el bloque de entorno del proceso actual.
En sistemas similares a Unix, se omiten las llamadas al método SetEnvironmentVariable(String, String, EnvironmentVariableTarget) con un valor de EnvironmentVariableTarget.Machine o EnvironmentVariableTarget.User.
En sistemas similares a Unix, las llamadas al método SetEnvironmentVariable(String, String, EnvironmentVariableTarget) con un valor de EnvironmentVariableTarget.Process no tienen ningún efecto en las bibliotecas nativas que estén cargadas o se cargarán. (Por el contrario, los autores de llamadas administrados no ven las modificaciones del entorno en proceso realizadas por las bibliotecas nativas).
Si el argumento value
no es null
y la variable de entorno denominada por el argumento variable
no existe, la variable de entorno se crea y asigna el contenido de value
. Si existe, se modifica su valor.
Si variable
contiene un carácter cero hexadecimal no inicial, los caracteres anteriores a cero se consideran el nombre de la variable de entorno y se omiten todos los caracteres posteriores.
Si value
contiene un carácter cero hexadecimal no inicial, los caracteres anteriores a cero se asignan a la variable de entorno y se omiten todos los caracteres posteriores.
Si value
está null
(o está vacío en versiones anteriores a .NET 9) y la variable de entorno denominada por variable
existe, se elimina la variable de entorno.
value
se considera vacío en cualquiera de las condiciones siguientes:
- Es String.Empty.
- Consta de un solo carácter cuyo valor es U+0000.
Si variable
no existe, no se produce ningún error aunque no se puede realizar la operación. Tenga cuidado cuando target
es Machine, ya que puede eliminar accidentalmente una variable de entorno que afecte a toda la máquina local, no solo el proceso o el usuario actuales.
EnvironmentVariableTarget.Machine y EnvironmentVariableTarget.User en sistemas Windows
Si target
es EnvironmentVariableTarget.User, la variable de entorno se almacena en la clave HKEY_CURRENT_USER\Environment del registro del equipo local. También se copia en instancias del Explorador de archivos que se ejecutan como el usuario actual. A continuación, la variable de entorno se hereda de los nuevos procesos que el usuario inicia desde el Explorador de archivos.
Del mismo modo, si target
es EnvironmentVariableTarget.Machine, la variable de entorno se almacena en la clave HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment del registro del equipo local. También se copia en todas las instancias del Explorador de archivos. A continuación, la variable de entorno la hereda cualquier proceso nuevo que se inicie desde el Explorador de archivos.
Si target
es User o Machine, se notifica a otras aplicaciones la operación establecida mediante un mensaje de windows WM_SETTINGCHANGE
.
Si target
es EnvironmentVariableTarget.User o EnvironmentVariableTarget.Machine, se recomienda que la longitud de value
sea inferior a 2048 caracteres.
Consulte también
- GetEnvironmentVariable(String, EnvironmentVariableTarget)
- GetEnvironmentVariables(EnvironmentVariableTarget)
- EnvironmentVariableTarget