英語で読む

次の方法で共有


EnvironmentVariableTarget 列挙型

定義

環境変数の格納場所を指定します。

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.SetEnvironmentVariableEnvironment.GetEnvironmentVariable格納または取得される場所 (ターゲット) を指定するために、特定のオーバーロード 、およびEnvironment.GetEnvironmentVariablesメソッドによって使用されます。

ターゲットは、次の 3 つの場所のいずれかになります。

  • 現在のプロセス (EnvironmentVariableTarget.Process) に関連付けられている環境ブロック。

    ユーザーは、設定された操作で環境変数を作成します。 プロセスが終了すると、オペレーティング システムはそのプロセス内の環境変数を破棄します。

  • 現在のユーザー (EnvironmentVariableTarget.User) に関連付けられている環境変数用に予約されたWindows オペレーティング システム レジストリ キー。

    Windowsシステムでは、ユーザーが設定された操作で環境変数を作成すると、オペレーティング システムは環境変数をシステム レジストリに格納しますが、現在のプロセスには格納しません。 ユーザーが新しいプロセスを開始すると、オペレーティング システムはレジストリからそのプロセスに環境変数をコピーします。 プロセスが終了すると、オペレーティング システムはそのプロセス内の環境変数を破棄します。 ただし、レジストリ内の環境変数は、ユーザーがプログラムまたはオペレーティング システム ツールを使用して削除するまで保持されます。

    Unix ベースのシステムでは、環境変数EnvironmentVariable.Userを作成しようとしても効果はなく、戻り値 null (C#) または Nothing (Visual Basic) を使用してEnvironmentVariable.User環境変数を取得しようとします。

  • ローカル コンピューター (EnvironmentVariableTarget.Machine) 上のすべてのユーザーに関連付けられている環境変数用に予約されたレジストリ キー。

    ユーザーが設定された操作で環境変数を作成すると、オペレーティング システムは環境変数をシステム レジストリに格納しますが、現在のプロセスでは保存しません。 ローカル コンピューター上のユーザーが新しいプロセスを開始すると、オペレーティング システムはレジストリからそのプロセスに環境変数をコピーします。 プロセスが終了すると、オペレーティング システムはそのプロセス内の環境変数を破棄します。 ただし、レジストリ内の環境変数は、ユーザーがプログラムまたはオペレーティング システム ツールを使用して削除するまで保持されます。

    Unix ベースのシステムでは、環境変数EnvironmentVariable.Machineを作成しようとしても効果はなく、戻り値 null (C#) または Nothing (Visual Basic) を使用してEnvironmentVariable.Machine環境変数を取得しようとします。

適用対象

製品 バージョン
.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