閱讀英文

共用方式為


EnvironmentVariableTarget 列舉

定義

指定在 set 或 get 作業中要儲存或擷取環境變數的位置。

C#
public enum EnvironmentVariableTarget
C#
[System.Runtime.InteropServices.ComVisible(true)]
public enum EnvironmentVariableTarget
繼承
EnvironmentVariableTarget
屬性

欄位

Machine 2

此環境變數是從 Windows 作業系統登錄中的 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 機碼所擷取而來,或是儲存在其中。 應該只有 Windows 系統上執行的 .NET 實作使用此值。

Process 0

此環境變數是從與目前處理序有關聯的環境區塊中所擷取而來,或是儲存在其中。

User 1

此環境變數是從 Windows 作業系統登錄中的 HKEY_CURRENT_USER\Environment 機碼所擷取而來,或是儲存在其中。 應該只有 Windows 系統上執行的 .NET 實作使用此值。

範例

下列範例會在 EnvironmentVariableTarget 建立、擷取和刪除環境變數的方法中使用 列舉。 範例的輸出顯示儲存和擷取的環境變數,而不指定 EnvironmentVariableTarget 值會儲存在與目前進程相關聯的環境區塊中 (EnvironmentVariableTarget.Process) 。 Unix 型系統的範例輸出也會顯示嘗試使用 以外的值來定義環境變數,但 EnvironmentVariableTarget.Process 會遭到忽略。

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

備註

列舉 EnvironmentVariableTarget 是由 、 Environment.GetEnvironmentVariableEnvironment.GetEnvironmentVariables 方法的特定多載 Environment.SetEnvironmentVariable 用來指定位置或目標,其中會儲存或擷取環境變數的名稱和值。

目標可以是三個位置的其中一個:

  • 與目前進程相關聯的環境區塊 (EnvironmentVariableTarget.Process) 。

    使用者會在設定作業中建立環境變數。 當進程終止時,作業系統會終結該程式中的環境變數。

  • Windows作業系統登錄機碼,保留給與目前使用者相關聯的環境變數 (EnvironmentVariableTarget.User) 。

    在Windows系統上,當使用者在設定作業中建立環境變數時,作業系統會將環境變數儲存在系統登錄中,但不會儲存在目前的進程中。 如果使用者啟動新的進程,作業系統會將環境變數從登錄複製到該程式。 當進程終止時,作業系統會終結該程式中的環境變數。 不過,登錄中的環境變數會持續存在,直到使用者以程式設計方式或透過作業系統工具將其移除為止。

    在 Unix 系統上,嘗試建立沒有作用的 enviroment 變數 EnvironmentVariable.User ,而且嘗試 (使用 EnvironmentVariable.User null C#) 或 (Visual Basic) 中的 c#) 或 Nothing (來擷取 enviroment 變數。

  • 保留給與本機電腦上所有使用者相關聯之環境變數的登錄機碼, EnvironmentVariableTarget.Machine () 。

    當使用者在設定作業中建立環境變數時,作業系統會將環境變數儲存在系統登錄中,但不會儲存在目前的進程中。 如果本機電腦上的任何使用者啟動新的進程,作業系統會將環境變數從登錄複製到該程式。 當進程終止時,作業系統會終結該程式中的環境變數。 不過,登錄中的環境變數會持續存在,直到使用者以程式設計方式或透過作業系統工具移除它為止。

    在 Unix 系統上,嘗試建立沒有作用的 enviroment 變數 EnvironmentVariable.Machine ,而且嘗試 (使用 EnvironmentVariable.Machine null C#) 或 (Visual Basic) 中的 c#) 或 Nothing (來擷取 enviroment 變數。

適用於

產品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1