Environment.SetEnvironmentVariable Metoda

Definice

Vytvoří, upraví nebo odstraní proměnnou prostředí.

Přetížení

SetEnvironmentVariable(String, String)

Vytvoří, upraví nebo odstraní proměnnou prostředí uloženou v aktuálním procesu.

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

Vytvoří, upraví nebo odstraní proměnnou prostředí uloženou v aktuálním procesu nebo v klíči registru operačního systému Windows vyhrazeném pro aktuálního uživatele nebo místní počítač.

SetEnvironmentVariable(String, String)

Zdroj:
Environment.cs
Zdroj:
Environment.cs
Zdroj:
Environment.cs

Vytvoří, upraví nebo odstraní proměnnou prostředí uloženou v aktuálním procesu.

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)

Parametry

variable
String

Název proměnné prostředí.

value
String

Hodnota, která se má přiřadit k variable.

Výjimky

variable je null.

variable obsahuje řetězec nulové délky, počáteční šestnáctkový znak nuly (0x00) nebo rovnítko ("=").

-nebo-

Délka variable nebo value je větší nebo rovna 32 767 znakům.

-nebo-

Při provádění této operace došlo k chybě.

Volající nemá požadované oprávnění k provedení této operace.

Příklady

Následující příklad se pokusí načíst hodnotu proměnné prostředí s názvem Test1 z bloku prostředí procesu. Pokud proměnná neexistuje, příklad vytvoří proměnnou a načte její hodnotu. V příkladu se zobrazí hodnota proměnné. U implementací .NET spuštěných v systémech Windows volá také metodu GetEnvironmentVariables(EnvironmentVariableTarget) s jednotlivými členy výčtu EnvironmentVariableTarget , aby se stanovilo, že proměnnou lze načíst pouze z aktuálního bloku prostředí procesu. (Implementace .NET v unixových systémech podporují proměnné pouze v bloku prostředí procesu.) Pokud příklad vytvořil proměnnou, odstraní ji.

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.

Poznámky

Volání této metody je ekvivalentní volání SetEnvironmentVariable(String, String, EnvironmentVariableTarget) přetížení s hodnotou EnvironmentVariableTarget.Process argumentu target .

V unixových systémech nemají volání SetEnvironmentVariable(String, String) metody žádný vliv na žádné nativní knihovny, které jsou nebo budou načteny. (Naopak, úpravy prostředí v procesu provedené nativními knihovnami se spravovaným volajícím nezobrazují.)

value Pokud argument není prázdný (definici prázdné hodnoty najdete v diskuzi o odstranění proměnné prostředí dále v této části) a proměnná prostředí pojmenovaná parametrem variable neexistuje, proměnná prostředí se vytvoří a přiřadí se obsah .value Pokud existuje, změní se jeho hodnota. Vzhledem k tomu, že proměnná prostředí je definována pouze v bloku prostředí aktuálního procesu, nezachovává se po ukončení procesu.

Pokud variable obsahuje neinicialní šestnáctkový nulový znak, považují se znaky před znakem nula za název proměnné prostředí a všechny následující znaky se ignorují.

Pokud value obsahuje neinicialní hexadecimální nulový znak, přiřadí se znaky před nulovým znakem proměnné prostředí a všechny následující znaky se ignorují.

Pokud value je prázdná a proměnná prostředí s názvem by variable existuje, proměnná prostředí se odstraní. Pokud variable neexistuje, nedojde k žádné chybě, i když operaci nelze provést. value se považuje za prázdné za některé z následujících podmínek:

  • nullJe to .
  • String.EmptyJe to .
  • Skládá se z jednoho znaku, jehož hodnota je U+0000.

Viz také

Platí pro

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

Zdroj:
Environment.cs
Zdroj:
Environment.cs
Zdroj:
Environment.cs

Vytvoří, upraví nebo odstraní proměnnou prostředí uloženou v aktuálním procesu nebo v klíči registru operačního systému Windows vyhrazeném pro aktuálního uživatele nebo místní počítač.

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)

Parametry

variable
String

Název proměnné prostředí.

value
String

Hodnota, která se má přiřadit k variable.

target
EnvironmentVariableTarget

Jedna z hodnot výčtu, která určuje umístění proměnné prostředí.

Výjimky

variable je null.

variable obsahuje řetězec nulové délky, počáteční šestnáctkový znak nuly (0x00) nebo rovnítko ("=").

-nebo-

Délka souboru variable je větší nebo rovna 32 767 znakům.

-nebo-

target není členem výčtu EnvironmentVariableTarget .

-nebo-

target je Machine nebo Usera délka variable je větší nebo rovna 255.

-nebo-

target je Process a délka value je větší nebo rovna 32 767 znakům.

-nebo-

Při provádění této operace došlo k chybě.

Volající nemá požadované oprávnění k provedení této operace.

Příklady

Následující příklad vytvoří proměnné prostředí pro EnvironmentVariableTarget.Processcíle , EnvironmentVariableTarget.Usera Machine , zkontroluje, jestli registr operačního systému obsahuje proměnné prostředí uživatele a počítače, a pak odstraní proměnné prostředí. Vzhledem k tomu, že .NET v unixových systémech nepodporuje proměnné prostředí pro jednotlivé uživatele a počítače, pouze SetEnvironmentVariable(String, String) a SetEnvironmentVariable(String, String, EnvironmentVariableTarget) s hodnotou EnvironmentVariableTarget.Process úspěšně uložit proměnnou prostředí do bloku prostředí procesu.

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

Poznámky

Metoda SetEnvironmentVariable(String, String, EnvironmentVariableTarget) umožňuje definovat proměnnou prostředí, která je k dispozici pro aktuální proces ( Process hodnotu). Proměnné prostředí, které jsou jedinečné pro aktuální blok prostředí procesu, se zachovají pouze do ukončení procesu.

Kromě toho metoda umožňuje definovat proměnnou prostředí, SetEnvironmentVariable(String, String, EnvironmentVariableTarget) která je dostupná pro všechny procesy spuštěné na počítači ( EnvironmentVariableTarget.Machine hodnota) a pro všechny procesy spuštěné uživatelem ( EnvironmentVariableTarget.User hodnota). Proměnné prostředí pro jednotlivé počítače a uživatele se zkopírují do bloku prostředí aktuálního procesu.

V unixových systémech jsou volání SetEnvironmentVariable(String, String, EnvironmentVariableTarget) metody s hodnotou EnvironmentVariableTarget.Machine nebo EnvironmentVariableTarget.User ignorována.

V systémech typu Unix nemají volání SetEnvironmentVariable(String, String, EnvironmentVariableTarget) metody s hodnotou hodnotu EnvironmentVariableTarget.Process žádný vliv na žádné nativní knihovny, které jsou nebo budou načteny. (Naopak, úpravy prostředí v procesu provedené nativními knihovnami se spravovaným volajícím nezobrazují.)

value Pokud argument není prázdný (definici prázdné hodnoty najdete v diskuzi o odstranění proměnné prostředí dále v této části) a proměnná prostředí pojmenovaná argumentem variable neexistuje, vytvoří se proměnná prostředí a přiřadí se obsah .value Pokud existuje, změní se jeho hodnota.

Pokud variable obsahuje neinicialní šestnáctkový nulový znak, považují se znaky před znakem nula za název proměnné prostředí a všechny následující znaky se ignorují.

Pokud value obsahuje neinicialní hexadecimální nulový znak, přiřadí se znaky před nulovým znakem proměnné prostředí a všechny následující znaky se ignorují.

Pokud value je prázdná a proměnná prostředí s názvem by variable existuje, proměnná prostředí se odstraní. value se považuje za prázdné za některé z následujících podmínek:

  • nullJe to .
  • String.EmptyJe to .
  • Skládá se z jednoho znaku, jehož hodnota je U+0000.

Pokud variable neexistuje, nedojde k žádné chybě, i když operaci nelze provést. Buďte opatrní, když target je Machine, protože můžete omylem odstranit proměnnou prostředí, která ovlivňuje celý místní počítač, nejen aktuální proces nebo uživatele.

EnvironmentVariableTarget.Machine a EnvironmentVariableTarget.User v systémech Windows

Pokud target je EnvironmentVariableTarget.User, je proměnná prostředí uložena v HKEY_CURRENT_USER\Environment klíč registru místního počítače. Zkopíruje se také do instancí Průzkumník souborů, které běží jako aktuální uživatel. Proměnnou prostředí pak zdědí všechny nové procesy, které uživatel spustí z Průzkumník souborů.

Podobně pokud target je EnvironmentVariableTarget.Machine, proměnná prostředí je uložena v HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment klíč registru místního počítače. Zkopíruje se také do všech instancí Průzkumník souborů. Proměnnou prostředí pak zdědí všechny nové procesy, které se spouští z Průzkumník souborů.

Pokud target je User nebo Machine, jsou jiné aplikace upozorněny na operaci nastavení zprávou systému Windows WM_SETTINGCHANGE .

Pokud target je EnvironmentVariableTarget.User nebo EnvironmentVariableTarget.Machine, doporučujeme, aby délka value byla kratší než 2048 znaků.

Viz také

Platí pro