Environment.SetEnvironmentVariable Methode

Definition

Erstellt, ändert oder löscht eine Umgebungsvariable.

Überlädt

SetEnvironmentVariable(String, String)

Erstellt, ändert oder löscht eine im aktuellen Prozess gespeicherte Umgebungsvariable.

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

Erstellt, ändert oder löscht eine Umgebungsvariable, die im aktuellen Prozess oder im Registrierungsschlüssel des für den aktuellen Benutzer oder den lokalen Computer reservierten Windows-Betriebssystems gespeichert ist.

SetEnvironmentVariable(String, String)

Source:
Environment.cs
Source:
Environment.cs
Source:
Environment.cs

Erstellt, ändert oder löscht eine im aktuellen Prozess gespeicherte Umgebungsvariable.

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

value
String

Ein Wert, der variable zugewiesen werden soll.

Ausnahmen

variable ist null.

variable enthält eine leere Zeichenfolge („“), ein anfängliches Hexadezimalzeichen 0 (0x00) oder ein Gleichheitszeichen ("=").

- oder -

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

- oder -

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

Der Aufrufer hat nicht 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 ihren Wert ab. Im Beispiel wird der Wert der Variablen angezeigt. Bei .NET-Implementierungen, die auf Windows-Systemen ausgeführt werden, ruft sie auch die GetEnvironmentVariables(EnvironmentVariableTarget) -Methode mit jedem Member der EnvironmentVariableTarget Enumeration auf, um festzustellen, 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 schließlich 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 für EnvironmentVariableTarget.Process das target Argument.

Auf Unix-ähnlichen Systemen haben Aufrufe der SetEnvironmentVariable(String, String) -Methode keine Auswirkungen auf native Bibliotheken, die geladen werden oder werden. (Umgekehrt werden von nativen Bibliotheken vorgenommene Änderungen in der Prozessumgebung von verwalteten Aufrufern nicht angezeigt.)

Wenn die value Argument ist nicht leer (siehe die Erläuterung der Löschen einer Umgebungsvariablen, die weiter unten in diesem Abschnitt für die Definition von ein leerer Wert) und die Umgebungsvariable mit dem Namen, indem die variable Parameter nicht vorhanden ist, die Umgebungsvariable wird erstellt und dem Inhalt von zugewiesen value. Wenn er vorhanden ist, wird sein Wert geändert. Da die Umgebungsvariable nur im Umgebungsblock des aktuellen Prozesses definiert ist, bleibt sie nach Abschluss des Prozesses nicht erhalten.

Wenn variable ein nicht anfängliches hexadezimales Nullzeichen enthält, werden die Zeichen vor dem Nullzeichen als 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 Umgebungsvariablen zugewiesen, und alle nachfolgenden Zeichen werden ignoriert.

Wenn value leer ist und die Umgebungsvariable namens von variable 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 wird unter einer der folgenden Bedingungen als leer betrachtet:

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

Weitere Informationen

Gilt für:

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

Source:
Environment.cs
Source:
Environment.cs
Source:
Environment.cs

Erstellt, ändert oder löscht eine Umgebungsvariable, die im aktuellen Prozess oder im Registrierungsschlüssel des für den aktuellen Benutzer oder den lokalen Computer reservierten Windows-Betriebssystems gespeichert 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 Umgebungsvariablen.

value
String

Ein Wert, der variable zugewiesen werden soll.

target
EnvironmentVariableTarget

Einer der Enumerationswerte, der den Standort der Umgebungsvariablen angibt.

Ausnahmen

variable ist null.

variable enthält eine leere Zeichenfolge („“), ein anfängliches Hexadezimalzeichen 0 (0x00) oder ein Gleichheitszeichen ("=").

- oder -

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

- oder -

target ist kein Member der EnvironmentVariableTarget -Enumeration.

- oder -

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

- oder -

target ist gleich Process , und die Länge von value ist größer gleich 32,767.

- oder -

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

Der Aufrufer hat nicht die erforderliche Berechtigung zum Ausführen dieses Vorgangs.

Beispiele

Das folgende Beispiel erstellt die Umgebungsvariablen für die EnvironmentVariableTarget.Process, EnvironmentVariableTarget.User, und Machine ausgerichtet ist, überprüft, ob die Registrierung des Betriebssystems, die Benutzer und Computer-Umgebungsvariablen enthält, und löscht dann die Umgebungsvariablen. Da .NET auf Unix-ähnlichen Systemen keine Benutzer- und Computerumgebungsvariablen unterstützt, werden nur SetEnvironmentVariable(String, String) und SetEnvironmentVariable(String, String, EnvironmentVariableTarget) mit dem Wert erfolgreich eine Umgebungsvariable EnvironmentVariableTarget.Process im Prozessumgebungsblock gespeichert.

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 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) der -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 mit der SetEnvironmentVariable(String, String, EnvironmentVariableTarget) -Methode nur auf Windows-Systemen eine Umgebungsvariable definieren, die für alle Prozesse verfügbar ist, die auf einem Computer ausgeführt werden (der Wert) und für alle Prozesse, die EnvironmentVariableTarget.Machine von einem Benutzer (der EnvironmentVariableTarget.User Wert) ausgeführt werden. Umgebungsvariablen pro Computer und Benutzer werden in den Umgebungsblock des aktuellen Prozesses kopiert.

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

Auf Unix-ähnlichen Systemen wirken sich Aufrufe der -Methode mit dem SetEnvironmentVariable(String, String, EnvironmentVariableTarget) Wert von EnvironmentVariableTarget.Process nicht auf native Bibliotheken aus, die geladen werden oder werden. (Umgekehrt werden von nativen Bibliotheken vorgenommene Änderungen in der Prozessumgebung von verwalteten Aufrufern nicht angezeigt.)

Wenn die value Argument ist nicht leer (siehe die Erläuterung der Löschen einer Umgebungsvariablen, die weiter unten in diesem Abschnitt für die Definition von ein leerer Wert) und die Umgebungsvariable mit dem Namen, indem die variable Argument ist nicht vorhanden, die Umgebungsvariable wird erstellt und dem Inhalt von zugewiesen value. Wenn er vorhanden ist, wird sein Wert geändert.

Wenn variable ein nicht anfängliches hexadezimales Nullzeichen enthält, werden die Zeichen vor dem Nullzeichen als 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 Umgebungsvariablen zugewiesen, und alle nachfolgenden Zeichen werden ignoriert.

Wenn value leer ist und die Umgebungsvariable namens von variable vorhanden ist, wird die Umgebungsvariable gelöscht. value wird unter einer der folgenden Bedingungen als leer betrachtet:

  • Es ist null.
  • Es ist String.Empty.
  • Es 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. Seien Sie vorsichtig, 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 target dies der Fall ist EnvironmentVariableTarget.User, wird die Umgebungsvariable im HKEY_CURRENT_USER\Environment Schlüssel der Registrierung des lokalen Computers gespeichert. Es wird auch in Instanzen von Explorer kopiert, die als aktueller Benutzer ausgeführt werden. Die Umgebungsvariable wird dann von allen neuen Prozessen geerbt, die der Benutzer von Explorer aus startet.

Wenn dies der Fall istEnvironmentVariableTarget.Machine, target wird die Umgebungsvariable im HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment Schlüssel der Registrierung des lokalen Computers gespeichert. Es wird auch in alle Instanzen von Explorer kopiert. Die Umgebungsvariable wird dann von allen neuen Prozessen geerbt, die von Explorer gestartet werden.

Wenn target oder MachineistUser, werden andere Anwendungen durch eine Windows-Nachricht WM_SETTINGCHANGE über den Set-Vorgang benachrichtigt.

Wenn target oder EnvironmentVariableTarget.MachineistEnvironmentVariableTarget.User, wird empfohlen, die Länge von value weniger als 2048 Zeichen zu betragen.

Weitere Informationen

Gilt für: