Environment.SetEnvironmentVariable Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea, modifica o elimina una variabile di ambiente.
Overload
SetEnvironmentVariable(String, String) |
Crea, modifica o elimina una variabile di ambiente memorizzata nel processo corrente. |
SetEnvironmentVariable(String, String, EnvironmentVariableTarget) |
Crea, modifica o elimina una variabile di ambiente memorizzata nel processo corrente o nella chiave del Registro del sistema operativo Windows riservata all'utente corrente o al computer locale. |
SetEnvironmentVariable(String, String)
- Origine:
- Environment.cs
- Origine:
- Environment.cs
- Origine:
- Environment.cs
Crea, modifica o elimina una variabile di ambiente memorizzata nel processo corrente.
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)
Parametri
- variable
- String
Nome di una variabile di ambiente.
- value
- String
Valore da assegnare a variable
.
Eccezioni
variable
è null
.
variable
contiene una stringa di lunghezza zero, un carattere iniziale zero esadecimale (0x00) o un segno di uguale ("=").
-oppure-
La lunghezza di variable
o value
è maggiore o uguale a 32.767 caratteri.
-oppure-
Si è verificato un errore durante l'esecuzione dell'operazione.
Il chiamante non ha l'autorizzazione richiesta per eseguire questa operazione.
Esempio
Nell'esempio seguente viene tentato di recuperare il valore di una variabile di ambiente denominata Test1
dal blocco di ambiente del processo. Se la variabile non esiste, l'esempio crea la variabile e recupera il relativo valore. Nell'esempio viene visualizzato il valore della variabile. Per le implementazioni .NET in esecuzione nei sistemi Windows, chiama anche il GetEnvironmentVariables(EnvironmentVariableTarget) metodo con ogni membro dell'enumerazione EnvironmentVariableTarget per stabilire che la variabile può essere recuperata solo dal blocco di ambiente del processo corrente. Le implementazioni di .NET nei sistemi unix supportano solo le variabili nel blocco dell'ambiente di elaborazione. Infine, se l'esempio ha creato la variabile, 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.
Commenti
La chiamata a questo metodo equivale a chiamare l'overload SetEnvironmentVariable(String, String, EnvironmentVariableTarget) con un valore di EnvironmentVariableTarget.Process per l'argomento target
.
Nei sistemi Unix, le chiamate al SetEnvironmentVariable(String, String) metodo non hanno alcun effetto sulle librerie native che sono o saranno caricate. Al contrario, le modifiche dell'ambiente in-process apportate dalle librerie native non vengono visualizzate dai chiamanti gestiti.
Se l'argomento value
non è vuoto (vedere la discussione sull'eliminazione di una variabile di ambiente più avanti in questa sezione per la definizione di un valore vuoto) e la variabile di ambiente denominata dal variable
parametro non esiste, la variabile di ambiente viene creata e assegnata il contenuto di value
. Se esiste, il relativo valore viene modificato. Poiché la variabile di ambiente è definita solo nel blocco di ambiente del processo corrente, non viene mantenuta dopo la fine del processo.
Se variable
contiene un carattere esadecimale non iniziale, i caratteri prima che il carattere zero venga considerato il nome della variabile di ambiente e tutti i caratteri successivi vengono ignorati.
Se value
contiene un carattere esadecimale non iniziale, i caratteri prima che il carattere zero venga assegnato alla variabile di ambiente e tutti i caratteri successivi vengano ignorati.
Se value
è vuota e la variabile di ambiente denominata da variable
esiste, la variabile di ambiente viene eliminata. Se variable
non esiste, non si verifica alcun errore anche se l'operazione non può essere eseguita. value
viene considerato vuoto in una delle condizioni seguenti:
- È
null
. - È String.Empty.
- È costituito da un singolo carattere il cui valore è U+0000.
Vedi anche
Si applica a
SetEnvironmentVariable(String, String, EnvironmentVariableTarget)
- Origine:
- Environment.cs
- Origine:
- Environment.cs
- Origine:
- Environment.cs
Crea, modifica o elimina una variabile di ambiente memorizzata nel processo corrente o nella chiave del Registro del sistema operativo Windows riservata all'utente corrente o al computer locale.
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)
Parametri
- variable
- String
Nome di una variabile di ambiente.
- value
- String
Valore da assegnare a variable
.
- target
- EnvironmentVariableTarget
Uno dei valori di enumerazione che specifica la posizione della variabile di ambiente.
Eccezioni
variable
è null
.
variable
contiene una stringa di lunghezza zero, un carattere iniziale zero esadecimale (0x00) o un segno di uguale ("=").
-oppure-
La lunghezza di variable
è maggiore o uguale a 32.767 caratteri.
-oppure-
target
non è membro dell'enumerazione EnvironmentVariableTarget .
-oppure-
target
è Machine o Usere la lunghezza di variable
è maggiore o uguale a 255.
-oppure-
target
è Process e la lunghezza di value
è maggiore o uguale a 32.767 caratteri.
-oppure-
Si è verificato un errore durante l'esecuzione dell'operazione.
Il chiamante non ha l'autorizzazione richiesta per eseguire questa operazione.
Esempio
Nell'esempio seguente vengono create variabili di ambiente per le EnvironmentVariableTarget.Processdestinazioni , EnvironmentVariableTarget.Usere Machine verifica se il Registro di sistema operativo contiene le variabili di ambiente utente e computer, quindi elimina le variabili di ambiente. Poiché i sistemi .NET in unix non supportano variabili di ambiente per utente e per computer, solo SetEnvironmentVariable(String, String) e SetEnvironmentVariable(String, String, EnvironmentVariableTarget) con un valore di archiviare correttamente una variabile di EnvironmentVariableTarget.Process ambiente al blocco di ambiente di 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...
Commenti
Il SetEnvironmentVariable(String, String, EnvironmentVariableTarget) metodo consente di definire una variabile di ambiente disponibile per il processo corrente (il Process valore). Le variabili di ambiente univoche per il blocco dell'ambiente di processo corrente vengono mantenute solo fino al termine del processo.
Inoltre, solo nei sistemi Windows, il SetEnvironmentVariable(String, String, EnvironmentVariableTarget) metodo consente di definire una variabile di ambiente disponibile per tutti i processi eseguiti in un computer (il EnvironmentVariableTarget.Machine valore) e per tutti i processi eseguiti da un utente (il EnvironmentVariableTarget.User valore). Le variabili di ambiente per computer e per utente vengono copiate nel blocco di ambiente del processo corrente.
Nei sistemi Unix, le chiamate al SetEnvironmentVariable(String, String, EnvironmentVariableTarget) metodo con un valore di EnvironmentVariableTarget.Machine o EnvironmentVariableTarget.User vengono ignorate.
Nei sistemi Unix, le chiamate al SetEnvironmentVariable(String, String, EnvironmentVariableTarget) metodo con un valore di EnvironmentVariableTarget.Process non hanno alcun effetto sulle librerie native o verranno caricate. Al contrario, le modifiche dell'ambiente in-process apportate dalle librerie native non vengono visualizzate dai chiamanti gestiti.
Se l'argomento value
non è vuoto (vedere la discussione sull'eliminazione di una variabile di ambiente più avanti in questa sezione per la definizione di un valore vuoto) e la variabile di ambiente denominata dall'argomento variable
non esiste, la variabile di ambiente viene creata e assegnata il contenuto di value
. Se esiste, il relativo valore viene modificato.
Se variable
contiene un carattere esadecimale non iniziale, i caratteri prima che il carattere zero venga considerato il nome della variabile di ambiente e tutti i caratteri successivi vengono ignorati.
Se value
contiene un carattere esadecimale non iniziale, i caratteri prima che il carattere zero venga assegnato alla variabile di ambiente e tutti i caratteri successivi vengano ignorati.
Se value
è vuota e la variabile di ambiente denominata da variable
esiste, la variabile di ambiente viene eliminata. value
viene considerato vuoto in una delle condizioni seguenti:
- È
null
. - È String.Empty.
- È costituito da un singolo carattere il cui valore è U+0000.
Se variable
non esiste, non si verifica alcun errore anche se l'operazione non può essere eseguita. Prestare attenzione quando target
è Machine, perché è possibile eliminare accidentalmente una variabile di ambiente che influisce sull'intero computer locale, non solo il processo corrente o l'utente.
EnvironmentVariableTarget.Machine e EnvironmentVariableTarget.User nei sistemi Windows
Se target
è EnvironmentVariableTarget.User, la variabile di ambiente viene archiviata nella chiave HKEY_CURRENT_USER\Environment del Registro di sistema del computer locale. Viene copiato anche in istanze di Esplora file in esecuzione come utente corrente. La variabile di ambiente viene quindi ereditata da tutti i nuovi processi che l'utente avvia da Esplora file.
Analogamente, se target
è EnvironmentVariableTarget.Machine, la variabile di ambiente viene archiviata nella chiave HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment del Registro di sistema del computer locale. Viene copiato anche in tutte le istanze di Esplora file. La variabile di ambiente viene quindi ereditata da tutti i nuovi processi avviati da Esplora file.
Se target
è User o Machine, altre applicazioni ricevono una notifica dell'operazione impostata da un messaggio di Windows WM_SETTINGCHANGE
.
Se target
è EnvironmentVariableTarget.User o EnvironmentVariableTarget.Machine, è consigliabile che la lunghezza di value
sia inferiore a 2048 caratteri.
Vedi anche
- GetEnvironmentVariable(String, EnvironmentVariableTarget)
- GetEnvironmentVariables(EnvironmentVariableTarget)
- EnvironmentVariableTarget
Si applica a
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per