Environment.SetEnvironmentVariable Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria, modifica ou exclui uma variável de ambiente.
Sobrecargas
SetEnvironmentVariable(String, String) |
Cria, modifica ou exclui uma variável de ambiente armazenada no processo atual. |
SetEnvironmentVariable(String, String, EnvironmentVariableTarget) |
Cria, modifica ou exclui uma variável de ambiente armazenada no processo atual ou na chave do Registro do sistema operacional Windows reservada para o usuário ou computador local atual. |
SetEnvironmentVariable(String, String)
- Origem:
- Environment.cs
- Origem:
- Environment.cs
- Origem:
- Environment.cs
Cria, modifica ou exclui uma variável de ambiente armazenada no processo atual.
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
O nome de uma variável de ambiente.
- value
- String
Um valor a ser atribuído a variable
.
Exceções
variable
é null
.
variable
contém uma cadeia de caracteres de comprimento zero, um caractere zero hexadecimal inicial (0x00) ou um sinal de igual ("=").
-ou-
O comprimento de variable
ou value
é maior ou igual a 32.767 caracteres.
-ou-
Ocorreu um erro durante a execução desta operação.
O chamador não tem a permissão necessária para executar essa operação.
Exemplos
O exemplo a seguir tenta recuperar o valor de uma variável de ambiente chamada Test1
do bloco de ambiente do processo. Se a variável não existir, o exemplo criará a variável e recuperará seu valor. O exemplo exibe o valor da variável. Para implementações do .NET em execução em sistemas Windows, ele também chama o método GetEnvironmentVariables(EnvironmentVariableTarget) com cada membro da enumeração EnvironmentVariableTarget para estabelecer que a variável pode ser recuperada apenas do bloco de ambiente do processo atual. As implementações do (.NET em sistemas semelhantes ao Unix só dão suporte a variáveis no bloco de ambiente de processo).) Por fim, se o exemplo criou a variável, ela a excluirá.
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.
Comentários
Chamar esse método é equivalente a chamar a sobrecarga de SetEnvironmentVariable(String, String, EnvironmentVariableTarget) com um valor de EnvironmentVariableTarget.Process para o argumento target
.
Em sistemas semelhantes ao Unix, as chamadas para o método SetEnvironmentVariable(String, String) não têm nenhum efeito sobre as bibliotecas nativas que são ou serão carregadas. (Por outro lado, as modificações de ambiente em processo feitas por bibliotecas nativas não são vistas por chamadores gerenciados.)
Se o argumento value
não for null
e a variável de ambiente nomeada pelo parâmetro variable
não existir, a variável de ambiente será criada e atribuída o conteúdo de value
. Se existir, seu valor será modificado. Como a variável de ambiente é definida apenas no bloco de ambiente do processo atual, ela não persiste após o término do processo.
Se variable
contiver um caractere zero hexadecimal não inicial, os caracteres antes do caractere zero serão considerados o nome da variável de ambiente e todos os caracteres subsequentes serão ignorados.
Se value
contiver um caractere zero hexadecimal não inicial, os caracteres antes do caractere zero serão atribuídos à variável de ambiente e todos os caracteres subsequentes serão ignorados.
Se value
estiver null
(ou vazio em versões anteriores ao .NET 9) e a variável de ambiente nomeada por variable
existir, a variável de ambiente será excluída. Se variable
não existir, nenhum erro ocorrerá mesmo que a operação não possa ser executada.
value
é considerado vazio sob qualquer uma das seguintes condições:
- É String.Empty.
- Ele consiste em um único caractere cujo valor é U+0000.
Confira também
Aplica-se a
SetEnvironmentVariable(String, String, EnvironmentVariableTarget)
- Origem:
- Environment.cs
- Origem:
- Environment.cs
- Origem:
- Environment.cs
Cria, modifica ou exclui uma variável de ambiente armazenada no processo atual ou na chave do Registro do sistema operacional Windows reservada para o usuário ou computador local atual.
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
O nome de uma variável de ambiente.
- value
- String
Um valor a ser atribuído a variable
.
- target
- EnvironmentVariableTarget
Um dos valores de enumeração que especifica o local da variável de ambiente.
Exceções
variable
é null
.
variable
contém uma cadeia de caracteres de comprimento zero, um caractere zero hexadecimal inicial (0x00) ou um sinal de igual ("=").
-ou-
O comprimento de variable
é maior ou igual a 32.767 caracteres.
-ou-
target
não é membro da enumeração EnvironmentVariableTarget.
-ou-
target
é Machine ou Usere o comprimento de variable
é maior ou igual a 255.
-ou-
target
é Process e o comprimento de value
é maior ou igual a 32.767 caracteres.
-ou-
Ocorreu um erro durante a execução desta operação.
O chamador não tem a permissão necessária para executar essa operação.
Exemplos
O exemplo a seguir cria variáveis de ambiente para os destinos EnvironmentVariableTarget.Process, EnvironmentVariableTarget.Usere Machine, verifica se o registro do sistema operacional contém as variáveis de ambiente do usuário e do computador e exclui as variáveis de ambiente. Como o .NET em sistemas semelhantes ao Unix não dá suporte a variáveis de ambiente por usuário e por computador, apenas SetEnvironmentVariable(String, String) e SetEnvironmentVariable(String, String, EnvironmentVariableTarget) com um valor de EnvironmentVariableTarget.Process armazenar com êxito uma variável de ambiente para o bloco de ambiente do processo.
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...
Comentários
O método SetEnvironmentVariable(String, String, EnvironmentVariableTarget) permite definir uma variável de ambiente disponível para o processo atual (o valor Process). As variáveis de ambiente que são exclusivas do bloco de ambiente de processo atual persistem somente até que o processo seja encerrado.
Além disso, somente em sistemas Windows, o método SetEnvironmentVariable(String, String, EnvironmentVariableTarget) permite definir uma variável de ambiente disponível para todos os processos executados em um computador (o valor EnvironmentVariableTarget.Machine) e para todos os processos executados por um usuário (o valor EnvironmentVariableTarget.User). As variáveis de ambiente por computador e por usuário são copiadas para o bloco de ambiente do processo atual.
Em sistemas semelhantes ao Unix, as chamadas para o método SetEnvironmentVariable(String, String, EnvironmentVariableTarget) com um valor de EnvironmentVariableTarget.Machine ou EnvironmentVariableTarget.User são ignoradas.
Em sistemas semelhantes ao Unix, as chamadas para o método SetEnvironmentVariable(String, String, EnvironmentVariableTarget) com um valor de EnvironmentVariableTarget.Process não têm efeito em nenhuma biblioteca nativa que seja ou será carregada. (Por outro lado, as modificações de ambiente em processo feitas por bibliotecas nativas não são vistas por chamadores gerenciados.)
Se o argumento value
não for null
e a variável de ambiente nomeada pelo argumento variable
não existir, a variável de ambiente será criada e atribuída o conteúdo de value
. Se existir, seu valor será modificado.
Se variable
contiver um caractere zero hexadecimal não inicial, os caracteres antes do caractere zero serão considerados o nome da variável de ambiente e todos os caracteres subsequentes serão ignorados.
Se value
contiver um caractere zero hexadecimal não inicial, os caracteres antes do caractere zero serão atribuídos à variável de ambiente e todos os caracteres subsequentes serão ignorados.
Se value
estiver null
(ou vazio em versões anteriores ao .NET 9) e a variável de ambiente nomeada por variable
existir, a variável de ambiente será excluída.
value
é considerado vazio sob qualquer uma das seguintes condições:
- É String.Empty.
- Ele consiste em um único caractere cujo valor é U+0000.
Se variable
não existir, nenhum erro ocorrerá, embora a operação não possa ser executada. Tenha cuidado quando target
for Machine, pois você pode excluir acidentalmente uma variável de ambiente que afeta todo o computador local, não apenas o processo ou o usuário atual.
EnvironmentVariableTarget.Machine e EnvironmentVariableTarget.User em sistemas Windows
Se target
for EnvironmentVariableTarget.User, a variável de ambiente será armazenada na chave HKEY_CURRENT_USER\Environment do registro do computador local. Ele também é copiado para instâncias do Explorador de Arquivos que estão em execução como o usuário atual. A variável de ambiente é herdada por novos processos que o usuário inicia no Explorador de Arquivos.
Da mesma forma, se target
for EnvironmentVariableTarget.Machine, a variável de ambiente será armazenada na chave HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment do registro do computador local. Ele também é copiado para todas as instâncias do Explorador de Arquivos. A variável de ambiente é herdada por novos processos que são iniciados do Explorador de Arquivos.
Se target
for User ou Machine, outros aplicativos serão notificados sobre a operação definida por uma mensagem de WM_SETTINGCHANGE
do Windows.
Se target
for EnvironmentVariableTarget.User ou EnvironmentVariableTarget.Machine, recomendamos que o comprimento de value
seja menor que 2048 caracteres.
Confira também
- GetEnvironmentVariable(String, EnvironmentVariableTarget)
- GetEnvironmentVariables(EnvironmentVariableTarget)
- EnvironmentVariableTarget