Teilen über


Environment.SetEnvironmentVariable Methode

Definition

Erstellt, ändert oder löscht eine Umgebungsvariable.

Überlädt

SetEnvironmentVariable(String, String)

Erstellt, ändert oder löscht eine Umgebungsvariable, die im aktuellen Prozess gespeichert ist.

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

Erstellt, ändert oder löscht eine Umgebungsvariable, die im aktuellen Prozess oder im Windows-Betriebssystemregistrierungsschlüssel für den aktuellen Benutzer oder lokalen Computer reserviert ist.

SetEnvironmentVariable(String, String)

Quelle:
Environment.cs
Quelle:
Environment.cs
Quelle:
Environment.cs

Erstellt, ändert oder löscht eine Umgebungsvariable, die im aktuellen Prozess gespeichert ist.

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)

Parameter

variable
String

Der Name einer Umgebungsvariable.

value
String

Ein Wert, der variablezugewiesen werden soll.

Ausnahmen

variable ist null.

variable enthält eine leere Zeichenfolge, ein erstes hexadezimales Nullzeichen (0x00) oder ein Gleichheitszeichen ("=").

-oder-

Die Länge von variable oder value ist größer oder gleich 32.767 Zeichen.

-oder-

Während der Ausführung dieses Vorgangs ist ein Fehler aufgetreten.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung zum Ausführen dieses Vorgangs.

Beispiele

Im folgenden Beispiel wird versucht, den Wert einer Umgebungsvariable namens Test1 aus dem Prozessumgebungsblock abzurufen. Wenn die Variable nicht vorhanden ist, erstellt das Beispiel die Variable und ruft den Wert ab. Im Beispiel wird der Wert der Variablen angezeigt. Für .NET-Implementierungen, die auf Windows-Systemen ausgeführt werden, ruft sie auch die GetEnvironmentVariables(EnvironmentVariableTarget)-Methode mit jedem Element der EnvironmentVariableTarget-Aufzählung auf, um festzulegen, dass die Variable nur aus dem aktuellen Prozessumgebungsblock abgerufen werden kann. (.NET-Implementierungen auf Unix-ähnlichen Systemen unterstützen nur Variablen im Prozessumgebungsblock.) Wenn das Beispiel die Variable erstellt hat, wird sie gelöscht.

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.

Hinweise

Das Aufrufen dieser Methode entspricht dem Aufrufen der SetEnvironmentVariable(String, String, EnvironmentVariableTarget)-Überladung mit dem Wert EnvironmentVariableTarget.Process für das argument target.

Auf Unix-ähnlichen Systemen haben Aufrufe der SetEnvironmentVariable(String, String) Methode keine Auswirkungen auf systemeigene Bibliotheken, die geladen werden oder geladen werden. (In-Process-Umgebungsänderungen, die von systemeigenen Bibliotheken vorgenommen werden, werden von verwalteten Aufrufern nicht angezeigt.)

Wenn das argument value nicht null ist und die durch den parameter variable benannte Umgebungsvariable nicht vorhanden ist, wird die Umgebungsvariable erstellt und dem Inhalt von valuezugewiesen. Falls vorhanden, wird der Wert geändert. Da die Umgebungsvariable nur im Umgebungsblock des aktuellen Prozesses definiert ist, wird sie nach Beendigung des Prozesses nicht beibehalten.

Wenn variable ein nicht anfängliches hexadezimales Nullzeichen enthält, werden die Zeichen vor dem Nullzeichen als Der Name der Umgebungsvariablen betrachtet, und alle nachfolgenden Zeichen werden ignoriert.

Wenn value ein nicht anfängliches hexadezimales Nullzeichen enthält, werden die Zeichen vor dem Nullzeichen der Umgebungsvariable zugewiesen, und alle nachfolgenden Zeichen werden ignoriert.

Wenn value in Versionen vor .NET 9 null oder leer ist und die durch variable benannte Umgebungsvariable vorhanden ist, wird die Umgebungsvariable gelöscht. Wenn variable nicht vorhanden ist, tritt kein Fehler auf, obwohl der Vorgang nicht ausgeführt werden kann. value gilt unter den folgenden Bedingungen als leer:

  • Es ist String.Empty.
  • Sie besteht aus einem einzelnen Zeichen, dessen Wert U+0000 ist.

Weitere Informationen

Gilt für:

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

Quelle:
Environment.cs
Quelle:
Environment.cs
Quelle:
Environment.cs

Erstellt, ändert oder löscht eine Umgebungsvariable, die im aktuellen Prozess oder im Windows-Betriebssystemregistrierungsschlüssel für den aktuellen Benutzer oder lokalen Computer reserviert ist.

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)

Parameter

variable
String

Der Name einer Umgebungsvariable.

value
String

Ein Wert, der variablezugewiesen werden soll.

target
EnvironmentVariableTarget

Einer der Enumerationswerte, die den Speicherort der Umgebungsvariablen angibt.

Ausnahmen

variable ist null.

variable enthält eine leere Zeichenfolge, ein erstes hexadezimales Nullzeichen (0x00) oder ein Gleichheitszeichen ("=").

-oder-

Die Länge von variable ist größer oder gleich 32.767 Zeichen.

-oder-

target ist kein Mitglied der EnvironmentVariableTarget-Aufzählung.

-oder-

target ist Machine oder User, und die Länge der variable ist größer oder gleich 255.

-oder-

target ist Process und die Länge der value größer oder gleich 32.767 Zeichen ist.

-oder-

Während der Ausführung dieses Vorgangs ist ein Fehler aufgetreten.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung zum Ausführen dieses Vorgangs.

Beispiele

Im folgenden Beispiel werden Umgebungsvariablen für die EnvironmentVariableTarget.Process, EnvironmentVariableTarget.Userund Machine Ziele erstellt, überprüft, ob die Betriebssystemregistrierung die Benutzer- und Computerumgebungsvariablen enthält, und löscht dann die Umgebungsvariablen. Da .NET auf Unix-ähnlichen Systemen benutzer- und computerspezifische Umgebungsvariablen nicht unterstützt, werden nur SetEnvironmentVariable(String, String) und SetEnvironmentVariable(String, String, EnvironmentVariableTarget) mit dem Wert EnvironmentVariableTarget.Process eine Umgebungsvariable erfolgreich im Prozessumgebungsblock speichern.

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

Hinweise

Mit der SetEnvironmentVariable(String, String, EnvironmentVariableTarget)-Methode können Sie eine Umgebungsvariable definieren, die für den aktuellen Prozess (der Process Wert) verfügbar ist. Umgebungsvariablen, die für den aktuellen Prozessumgebungsblock eindeutig sind, bleiben nur bis zum Ende des Prozesses erhalten.

Darüber hinaus können Sie auf Windows-Systemen nur mit der SetEnvironmentVariable(String, String, EnvironmentVariableTarget)-Methode eine Umgebungsvariable definieren, die für alle Prozesse verfügbar ist, die auf einem Computer (dem EnvironmentVariableTarget.Machine Wert) und für alle Prozesse verfügbar sind, die von einem Benutzer (dem EnvironmentVariableTarget.User Wert) ausgeführt werden. Computer- und Benutzerumgebungsvariablen werden in den Umgebungsblock des aktuellen Prozesses kopiert.

Auf Unix-ähnlichen Systemen werden Aufrufe der SetEnvironmentVariable(String, String, EnvironmentVariableTarget) Methode mit dem Wert EnvironmentVariableTarget.Machine oder EnvironmentVariableTarget.User ignoriert.

Auf Unix-ähnlichen Systemen haben Aufrufe der SetEnvironmentVariable(String, String, EnvironmentVariableTarget)-Methode mit einem Wert von EnvironmentVariableTarget.Process keine Auswirkungen auf systemeigene Bibliotheken, die geladen sind oder geladen werden. (In-Process-Umgebungsänderungen, die von systemeigenen Bibliotheken vorgenommen werden, werden von verwalteten Aufrufern nicht angezeigt.)

Wenn das argument value nicht null ist und die durch das Argument variable benannte Umgebungsvariable nicht vorhanden ist, wird die Umgebungsvariable erstellt und dem Inhalt valuezugewiesen. Falls vorhanden, wird der Wert geändert.

Wenn variable ein nicht anfängliches hexadezimales Nullzeichen enthält, werden die Zeichen vor dem Nullzeichen als Der Name der Umgebungsvariablen betrachtet, und alle nachfolgenden Zeichen werden ignoriert.

Wenn value ein nicht anfängliches hexadezimales Nullzeichen enthält, werden die Zeichen vor dem Nullzeichen der Umgebungsvariable zugewiesen, und alle nachfolgenden Zeichen werden ignoriert.

Wenn value in Versionen vor .NET 9 null oder leer ist und die durch variable benannte Umgebungsvariable vorhanden ist, wird die Umgebungsvariable gelöscht. value gilt unter den folgenden Bedingungen als leer:

  • Es ist String.Empty.
  • Sie besteht aus einem einzelnen Zeichen, dessen Wert U+0000 ist.

Wenn variable nicht vorhanden ist, tritt kein Fehler auf, obwohl der Vorgang nicht ausgeführt werden kann. Achten Sie darauf, wenn targetMachineist, da Sie versehentlich eine Umgebungsvariable löschen können, die sich auf den gesamten lokalen Computer auswirkt, nicht nur auf den aktuellen Prozess oder den aktuellen Benutzer.

EnvironmentVariableTarget.Machine und EnvironmentVariableTarget.User auf Windows-Systemen

Wenn targetEnvironmentVariableTarget.Userist, wird die Umgebungsvariable im HKEY_CURRENT_USER\Environment Schlüssel der Registrierung des lokalen Computers gespeichert. Sie wird auch in Instanzen des Datei-Explorers kopiert, die als aktueller Benutzer ausgeführt werden. Die Umgebungsvariable wird dann von allen neuen Prozessen geerbt, die der Benutzer im Datei-Explorer startet.

Wenn targetEnvironmentVariableTarget.Machineist, wird die Umgebungsvariable im HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment Schlüssel der Registrierung des lokalen Computers gespeichert. Sie wird auch in alle Instanzen des Datei-Explorers kopiert. Die Umgebungsvariable wird dann von allen neuen Prozessen geerbt, die vom Datei-Explorer gestartet werden.

Wenn targetUser oder Machineist, werden andere Anwendungen von einer Windows WM_SETTINGCHANGE-Nachricht über den festgelegten Vorgang benachrichtigt.

Wenn targetEnvironmentVariableTarget.User oder EnvironmentVariableTarget.Machineist, empfehlen wir, dass die Länge von value weniger als 2048 Zeichen beträgt.

Weitere Informationen

Gilt für: