Environment.SetEnvironmentVariable 方法

定義

建立、修改或刪除環境變數。

多載

SetEnvironmentVariable(String, String)

建立、修改或刪除儲存在目前處理序中的環境變數。

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

建立、修改或刪除儲存在目前的處理序中,或是儲存在保留給目前使用者或本機電腦的 Windows 作業系統登錄機碼中的環境變數。

SetEnvironmentVariable(String, String)

來源:
Environment.cs
來源:
Environment.cs
來源:
Environment.cs

建立、修改或刪除儲存在目前處理序中的環境變數。

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)

參數

variable
String

環境變數的名稱。

value
String

要指派給 variable 的值。

例外狀況

variablenull

variable 包含零長度字串、初始十六進位零字元 (0x00) 或等號 ("=")。

-或-

variablevalue 的長度大於或等於 32,767 個字元。

-或-

執行這項作業期間發生錯誤。

呼叫端沒有執行這項作業的必要權限。

範例

下列範例會嘗試從進程環境區塊擷取名為 Test1 的環境變數值。 如果變數不存在,此範例會建立變數並擷取其值。 此範例會顯示變數的值。 對於在 Windows 系統上執行的 .NET 實作,它也會使用列舉的每個EnvironmentVariableTarget成員呼叫 GetEnvironmentVariables(EnvironmentVariableTarget) 方法,以建立變數只能從目前的進程環境區塊擷取。 (.NET 類似 Unix 的系統上實作僅支援進程環境區塊中的變數。) Finally,如果範例建立了變數,則會刪除變數。

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.

備註

呼叫這個方法相當於呼叫 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 具有 自變數值的 EnvironmentVariableTarget.Processtarget 多載。

在類似 Unix 的系統上,對方法的 SetEnvironmentVariable(String, String) 呼叫不會影響任何原生連結庫,或將會載入。 (相反地,Managed 呼叫端看不到原生連結庫所做的同進程環境修改。)

如果自 value 變數不是空的 (請參閱本節稍後刪除環境變數的討論,以取得空值的定義) ,而且參數所 variable 命名的環境變數不存在,則會建立環境變數並指派 的內容 value。 如果存在,則會修改其值。 因為環境變數只會定義在目前進程的環境區塊中,所以它不會在進程結束之後保存。

如果 variable 包含非初始十六進位零字元,則會將零個字元之前的字元視為環境變數名稱,並忽略所有後續字元。

如果 value 包含非初始十六進位零字元,則會忽略將零字元指派給環境變數之前的字元,並忽略所有後續字元。

如果 value 是空的,且所 variable 命名的環境變數存在,則會刪除環境變數。 如果 variable 不存在,即使無法執行作業,也不會發生任何錯誤。 value 在下列任一情況下,會被視為空白:

  • null它是 。
  • String.Empty它是 。
  • 它是由值為U+0000的單一字元所組成。

另請參閱

適用於

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

來源:
Environment.cs
來源:
Environment.cs
來源:
Environment.cs

建立、修改或刪除儲存在目前的處理序中,或是儲存在保留給目前使用者或本機電腦的 Windows 作業系統登錄機碼中的環境變數。

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)

參數

variable
String

環境變數的名稱。

value
String

要指派給 variable 的值。

target
EnvironmentVariableTarget

其中一個列舉值,指定環境變數的位置。

例外狀況

variablenull

variable 包含零長度字串、初始十六進位零字元 (0x00) 或等號 ("=")。

-或-

variable 的長度大於或等於 32,767 個字元。

-或-

target 不是 EnvironmentVariableTarget 列舉的成員。

-或-

targetMachineUser,且 variable 的長度大於等於 255。

-或-

targetProcess ,且 value 的長度大於或等於 32,767 個字元。

-或-

執行這項作業期間發生錯誤。

呼叫端沒有執行這項作業的必要權限。

範例

下列範例會建立、 EnvironmentVariableTarget.UserMachine 目標的環境變數EnvironmentVariableTarget.Process、檢查作業系統登錄是否包含使用者和計算機環境變數,然後刪除環境變數。 由於類似 Unix 系統上的 .NET 不支援每個使用者和每部電腦環境變數,因此只有 SetEnvironmentVariable(String, String)SetEnvironmentVariable(String, String, EnvironmentVariableTarget)EnvironmentVariableTarget.Process 成功將環境變數儲存至進程環境區塊。

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

備註

方法 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 可讓您定義目前進程可用的環境變數, (Process 值) 。 目前進程環境區塊唯一的環境變數只會保存到進程結束為止。

此外,只有 Windows 系統上,方法可讓您定義環境變數, SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 供計算機上執行的所有進程使用, (EnvironmentVariableTarget.Machine 值) ,以及使用者執行的所有進程 (EnvironmentVariableTarget.User 值) 。 每部計算機和每個用戶環境變數會複製到目前進程的環境區塊中。

在類似 Unix 的系統上,會忽略 或值的 EnvironmentVariableTarget.MachineEnvironmentVariableTarget.User 方法呼叫SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

在類似 Unix 的系統上,對值為 EnvironmentVariableTarget.Process 的方法呼叫SetEnvironmentVariable(String, String, EnvironmentVariableTarget)不會影響任何原生連結庫,或將會載入。 (相反地,Managed 呼叫端看不到原生連結庫所做的同進程環境修改。)

如果自 value 變數不是空的 (請參閱本節稍後刪除環境變數的討論,以取得空白值的定義) ,且自變數所命名的 variable 環境變數不存在,則會建立環境變數並指派 的內容 value。 如果存在,則會修改其值。

如果 variable 包含非初始十六進位零字元,則會將零個字元之前的字元視為環境變數名稱,並忽略所有後續字元。

如果 value 包含非初始十六進位零字元,則會忽略將零字元指派給環境變數之前的字元,並忽略所有後續字元。

如果 value 是空的,且所 variable 命名的環境變數存在,則會刪除環境變數。 value 在下列任一情況下,會被視為空白:

  • null它是 。
  • String.Empty它是 。
  • 它是由值為U+0000的單一字元所組成。

如果 variable 不存在,雖然無法執行作業,但不會發生任何錯誤。 當 是 Machinetarget請小心,因為您不小心刪除會影響整個本機計算機的環境變數,而不只是目前的進程或使用者。

Windows 系統上的 EnvironmentVariableTarget.Machine 和 EnvironmentVariableTarget.User

如果 為 targetEnvironmentVariableTarget.User,環境變數會儲存在本機計算機登錄的 HKEY_CURRENT_USER\Environment 機碼中。 它也會複製到以目前使用者身分執行之 檔案總管 實例。 然後,使用者從 檔案總管 啟動的任何新進程都會繼承環境變數。

同樣地,如果 是 targetEnvironmentVariableTarget.Machine,環境變數會儲存在本機計算機登錄的 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment 機碼中。 它也會複製到 檔案總管 的所有實例。 環境變數接著會由任何從 檔案總管 啟動的新進程繼承。

如果 targetUserMachine,則其他應用程式會透過 Windows WM_SETTINGCHANGE 訊息收到設定作業的通知。

如果 為 targetEnvironmentVariableTarget.UserEnvironmentVariableTarget.Machine,建議您 value 長度小於 2048 個字元。

另請參閱

適用於