Language

Environment.GetEnvironmentVariable メソッド

定義

環境変数の値を取得します。

オーバーロード

名前 説明
GetEnvironmentVariable(String)

現在のプロセスから環境変数の値を取得します。

GetEnvironmentVariable(String, EnvironmentVariableTarget)

現在のプロセスまたは現在のユーザーまたはローカル コンピューターのWindows オペレーティング システム レジストリ キーから環境変数の値を取得します。

GetEnvironmentVariable(String)

ソース:
Environment.cs
ソース:
Environment.cs
ソース:
Environment.cs
ソース:
Environment.cs
ソース:
Environment.cs

現在のプロセスから環境変数の値を取得します。

public:
 static System::String ^ GetEnvironmentVariable(System::String ^ variable);
public static string GetEnvironmentVariable(string variable);
public static string? GetEnvironmentVariable(string variable);
static member GetEnvironmentVariable : string -> string
Public Shared Function GetEnvironmentVariable (variable As String) As String

パラメーター

variable
String

環境変数の名前。

返品

variableで指定された環境変数の値。環境変数が見つからない場合はnull。

例外

variable は nullです。

呼び出し元には、この操作を実行するために必要なアクセス許可がありません。

例

次の例では、GetEnvironmentVariable メソッドを使用して、Windows ディレクトリのパスを含む windir 環境変数を取得します。

using System;
using System.IO;

public class Example
{
   public static void Main()
   {
      if (Environment.OSVersion.Platform == PlatformID.Win32NT)
      {
         // Change the directory to %WINDIR%
         Environment.CurrentDirectory = Environment.GetEnvironmentVariable("windir");
         DirectoryInfo info = new DirectoryInfo(".");

         Console.WriteLine("Directory Info:   " + info.FullName);
      }
      else
      {
         Console.WriteLine("This example runs on Windows only.");
      }
   }
}
// The example displays output like the following on a .NET implementation running on Windows:
//        Directory Info:   C:\windows
// The example displays the following output on a .NET implementation on Unix-based systems:
//        This example runs on Windows only.
open System
open System.IO

if Environment.OSVersion.Platform = PlatformID.Win32NT then
    // Change the directory to %WINDIR%
    Environment.CurrentDirectory <- Environment.GetEnvironmentVariable "windir"
    
    let info = DirectoryInfo "."

    printfn $"Directory Info:   {info.FullName}"
else
    printfn "This example runs on Windows only."
// The example displays output like the following on a .NET implementation running on Windows:
//        Directory Info:   C:\windows
// The example displays the following output on a .NET implementation on Unix-based systems:
//        This example runs on Windows only.
Imports System.IO

Module Example
   Public Sub Main()
        If Environment.OSVersion.Platform = PlatformID.Win32NT Then
            ' Change the directory to %WINDIR%
            Environment.CurrentDirectory = Environment.GetEnvironmentVariable("windir")
            Dim info As New DirectoryInfo(".")
            Console.WriteLine("Directory Info:   " + info.FullName)
         Else
            Console.WriteLine("This example runs on Windows only.")
         End If
   End Sub
End Module
' The example displays output like the following on a .NET implementation running on Windows:
'        Directory Info:   C:\windows
' The example displays the following output on a .NET implementation on Unix-based systems:
'        This example runs on Windows only.

次の例では、プロセス環境ブロックから Test1 という名前の環境変数の値の取得を試みます。 変数が存在しない場合、この例では変数を作成し、その値を取得します。 この例では、変数の値を表示します。 この例で変数を作成した場合は、GetEnvironmentVariables(EnvironmentVariableTarget) 列挙体の各メンバーと共に EnvironmentVariableTarget メソッドを呼び出して、現在のプロセス環境ブロックからのみ変数を取得できることを確認します。 最後に、この例で変数を作成した場合は、変数を削除します。

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.

注釈

GetEnvironmentVariable メソッドは、現在のプロセスから環境変数の値を取得します。

Unix系システムでは環境変数名は大文字と小文字を区別しますが、Windowsでは大文字と小文字を区別しません。

Note

ネイティブ ライブラリによって行われたインプロセス環境の変更は、マネージド呼び出し元には表示されません。 逆に、マネージド呼び出し元によって行われたこのような変更は、ネイティブ ライブラリでは見られません。

GetEnvironmentVariable(String) メソッド

GetEnvironmentVariable(String) メソッドは、現在のプロセスの環境ブロックからのみ環境変数を取得します。 これは、GetEnvironmentVariable(String, EnvironmentVariableTarget)のtarget値を使用してEnvironmentVariableTarget.Process メソッドを呼び出すことと同じです。

すべての環境変数とその値を取得するには、 GetEnvironmentVariables メソッドを呼び出します。

Windows システムの場合

Windows システムでは、現在のプロセスの環境ブロックには次のものが含まれます。

  • 作成した親プロセスによって提供されるすべての環境変数。 たとえば、コンソール ウィンドウから起動された .NET アプリケーションは、コンソール ウィンドウのすべての環境変数を継承します。

    親プロセスがない場合は、代わりにマシンごとの環境変数とユーザーごとの環境変数が使用されます。 たとえば、新しいコンソール ウィンドウには、起動時に定義されたすべてのマシンごとの環境変数とユーザーごとの環境変数があります。

  • プロセスの実行中にプロセス ブロックに追加された変数は、SetEnvironmentVariable(String, String) メソッドまたは SetEnvironmentVariable(String, String, EnvironmentVariableTarget) のtarget値を持つEnvironmentVariableTarget.Process メソッドを呼び出すことによって行われます。 これらの環境変数は、.NET アプリケーションが終了するまで保持されます。

プロセスの開始後に環境変数が作成された場合は、このメソッドを使用して、SetEnvironmentVariable(String, String) メソッドまたは .SetEnvironmentVariable(String, String, EnvironmentVariableTarget) のtarget値を持つEnvironmentVariableTarget.Process メソッドを呼び出して作成された変数のみを取得できます。

Unix に似たシステムの場合

Unix に似たシステムでは、現在のプロセスの環境ブロックには次の環境変数が含まれます。

Unix に似たシステム上の .NET では、マシンごとまたはユーザーごとの環境変数はサポートされません。

GetEnvironmentVariable(String, EnvironmentVariableTarget) メソッド

すべての環境変数とその値を取得するには、 GetEnvironmentVariables メソッドを呼び出します。

Windows システムの場合

Windows では、 target パラメーターは、環境変数を現在のプロセスから取得するか、現在のユーザーまたはローカル コンピューターの Windows オペレーティング システム レジストリ キーから取得するかを指定します。 .NET プロセスを作成した親プロセスで使用できるその他の環境変数と同様に、ユーザーごとおよびマシンごとの環境変数はすべて、現在のプロセスの環境ブロックに自動的にコピーされます。 ただし、SetEnvironmentVariable(String, String) メソッドまたは SetEnvironmentVariable(String, String, EnvironmentVariableTarget) メソッドを呼び出し、target が EnvironmentVariableTarget.Process である場合、現在のプロセスの環境ブロックにのみ追加された環境変数は、プロセスの存続期間中のみ有効です。

Unix に似たシステムの場合

Unix に似たシステムでは、GetEnvironmentVariable(String, EnvironmentVariableTarget) メソッドはtargetのEnvironmentVariableTarget.Process値のみをサポートします。 targetまたはEnvironmentVariableTarget.MachineのEnvironmentVariableTarget.User値を持つ呼び出しはサポートされておらず、nullを返します。

プロセスごとの環境変数は次のとおりです。

こちらもご覧ください

適用対象

GetEnvironmentVariable(String, EnvironmentVariableTarget)

ソース:
Environment.cs
ソース:
Environment.cs
ソース:
Environment.cs
ソース:
Environment.cs
ソース:
Environment.cs

現在のプロセスまたは現在のユーザーまたはローカル コンピューターのWindows オペレーティング システム レジストリ キーから環境変数の値を取得します。

public:
 static System::String ^ GetEnvironmentVariable(System::String ^ variable, EnvironmentVariableTarget target);
public static string? GetEnvironmentVariable(string variable, EnvironmentVariableTarget target);
public static string GetEnvironmentVariable(string variable, EnvironmentVariableTarget target);
static member GetEnvironmentVariable : string * EnvironmentVariableTarget -> string
Public Shared Function GetEnvironmentVariable (variable As String, target As EnvironmentVariableTarget) As String

パラメーター

variable
String

環境変数の名前。

target
EnvironmentVariableTarget

EnvironmentVariableTarget値の 1 つ。 Unix に似たシステムで実行されている.NETでは、Process のみがサポートされます。

返品

variableパラメーターとtarget パラメーターで指定された環境変数の値。環境変数が見つからない場合はnull。

例外

variable は nullです。

target が有効な EnvironmentVariableTarget 値ではありません。

呼び出し元には、この操作を実行するために必要なアクセス許可がありません。

例

次の例では、 EnvironmentVariableTarget.Process、 EnvironmentVariableTarget.User、および Machine ターゲットの環境変数を作成し、オペレーティング システム レジストリにユーザー環境変数とマシン環境変数が含まれているかどうかを確認してから、環境変数を削除します。 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...

注釈

GetEnvironmentVariable メソッドは、現在のプロセスから環境変数の値を取得します。

Unix系システムでは環境変数名は大文字と小文字を区別しますが、Windowsでは大文字と小文字を区別しません。

Note

ネイティブ ライブラリによって行われたインプロセス環境の変更は、マネージド呼び出し元には表示されません。 逆に、マネージド呼び出し元によって行われたこのような変更は、ネイティブ ライブラリでは見られません。

GetEnvironmentVariable(String) メソッド

GetEnvironmentVariable(String) メソッドは、現在のプロセスの環境ブロックからのみ環境変数を取得します。 これは、GetEnvironmentVariable(String, EnvironmentVariableTarget)のtarget値を使用してEnvironmentVariableTarget.Process メソッドを呼び出すことと同じです。

すべての環境変数とその値を取得するには、 GetEnvironmentVariables メソッドを呼び出します。

Windows システムの場合

Windows システムでは、現在のプロセスの環境ブロックには次のものが含まれます。

  • 作成した親プロセスによって提供されるすべての環境変数。 たとえば、コンソール ウィンドウから起動された .NET アプリケーションは、コンソール ウィンドウのすべての環境変数を継承します。

    親プロセスがない場合は、代わりにマシンごとの環境変数とユーザーごとの環境変数が使用されます。 たとえば、新しいコンソール ウィンドウには、起動時に定義されたすべてのマシンごとの環境変数とユーザーごとの環境変数があります。

  • プロセスの実行中にプロセス ブロックに追加された変数は、SetEnvironmentVariable(String, String) メソッドまたは SetEnvironmentVariable(String, String, EnvironmentVariableTarget) のtarget値を持つEnvironmentVariableTarget.Process メソッドを呼び出すことによって行われます。 これらの環境変数は、.NET アプリケーションが終了するまで保持されます。

プロセスの開始後に環境変数が作成された場合は、このメソッドを使用して、SetEnvironmentVariable(String, String) メソッドまたは .SetEnvironmentVariable(String, String, EnvironmentVariableTarget) のtarget値を持つEnvironmentVariableTarget.Process メソッドを呼び出して作成された変数のみを取得できます。

Unix に似たシステムの場合

Unix に似たシステムでは、現在のプロセスの環境ブロックには次の環境変数が含まれます。

Unix に似たシステム上の .NET では、マシンごとまたはユーザーごとの環境変数はサポートされません。

GetEnvironmentVariable(String, EnvironmentVariableTarget) メソッド

すべての環境変数とその値を取得するには、 GetEnvironmentVariables メソッドを呼び出します。

Windows システムの場合

Windows では、 target パラメーターは、環境変数を現在のプロセスから取得するか、現在のユーザーまたはローカル コンピューターの Windows オペレーティング システム レジストリ キーから取得するかを指定します。 .NET プロセスを作成した親プロセスで使用できるその他の環境変数と同様に、ユーザーごとおよびマシンごとの環境変数はすべて、現在のプロセスの環境ブロックに自動的にコピーされます。 ただし、SetEnvironmentVariable(String, String) メソッドまたは SetEnvironmentVariable(String, String, EnvironmentVariableTarget) メソッドを呼び出し、target が EnvironmentVariableTarget.Process である場合、現在のプロセスの環境ブロックにのみ追加された環境変数は、プロセスの存続期間中のみ有効です。

Unix に似たシステムの場合

Unix に似たシステムでは、GetEnvironmentVariable(String, EnvironmentVariableTarget) メソッドはtargetのEnvironmentVariableTarget.Process値のみをサポートします。 targetまたはEnvironmentVariableTarget.MachineのEnvironmentVariableTarget.User値を持つ呼び出しはサポートされておらず、nullを返します。

プロセスごとの環境変数は次のとおりです。

こちらもご覧ください

適用対象