Environment.SetEnvironmentVariable メソッド

定義

環境変数を作成、変更、または削除します。

オーバーロード

名前 説明
SetEnvironmentVariable(String, String)

現在のプロセスに格納されている環境変数を作成、変更、または削除します。

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

現在のプロセスまたは現在のユーザーまたはローカル コンピューター用に予約されているWindowsオペレーティング システム レジストリ キーに格納されている環境変数を作成、変更、または削除します。

SetEnvironmentVariable(String, String)

ソース:
Environment.cs
ソース:
Environment.cs
ソース:
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 には、長さ 0 の文字列、最初の 16 進数のゼロ文字 (0x00)、または等号 ("=") が含まれています。

-又は-

variableまたはvalueの長さが 32,767 文字以上です。

-又は-

この操作の実行中にエラーが発生しました。

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

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

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) メソッドの呼び出しは、読み込まれるネイティブ ライブラリまたは読み込まれるネイティブ ライブラリには影響しません。 (逆に、ネイティブ ライブラリによって行われたインプロセス環境の変更は、マネージド呼び出し元には表示されません)。

value引数がnullされず、variable パラメーターによって指定された環境変数が存在しない場合は、環境変数が作成され、valueの内容が割り当てられます。 存在する場合は、その値が変更されます。 環境変数は現在のプロセスの環境ブロックでのみ定義されるため、プロセスが終了した後は保持されません。

variableに最初以外の 16 進ゼロ文字が含まれている場合、ゼロ文字の前の文字は環境変数名と見なされ、それ以降のすべての文字は無視されます。

valueに最初以外の 16 進ゼロ文字が含まれている場合は、ゼロ文字の前の文字が環境変数に割り当てられ、それ以降のすべての文字は無視されます。

valuenull (または .NET 9 より前のバージョンでは空) で、variable によって名前が付けられた環境変数が存在する場合、環境変数は削除されます。 variableが存在しない場合、操作を実行できない場合でもエラーは発生しません。 value は、次のいずれかの条件で空と見なされます。

  • これは String.Empty
  • これは、値が U+0000 である 1 文字で構成されます。

こちらもご覧ください

適用対象

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

ソース:
Environment.cs
ソース:
Environment.cs
ソース:
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

環境変数の場所を指定する列挙値の 1 つ。

例外

variablenullです。

variable には、長さ 0 の文字列、最初の 16 進数のゼロ文字 (0x00)、または等号 ("=") が含まれています。

-又は-

variableの長さが 32,767 文字以上です。

-又は-

targetEnvironmentVariableTarget 列挙体のメンバーではありません。

-又は-

targetMachine または Userで、 variable の長さが 255 以上です。

-又は-

targetProcess で、 value の長さが 32,767 文字以上です。

-又は-

この操作の実行中にエラーが発生しました。

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

次の例では、 EnvironmentVariableTarget.ProcessEnvironmentVariableTarget.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...

注釈

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)メソッドを使用すると、現在のプロセスで使用できる環境変数 (Process値) を定義できます。 現在のプロセス環境ブロックに固有の環境変数は、プロセスが終了するまで保持されます。

さらに、Windows システムでのみ、SetEnvironmentVariable(String, String, EnvironmentVariableTarget) メソッドを使用すると、コンピューター上で実行されるすべてのプロセス (EnvironmentVariableTarget.Machine 値) とユーザーが実行するすべてのプロセス (EnvironmentVariableTarget.User 値) で使用できる環境変数を定義できます。 マシンごとの環境変数とユーザーごとの環境変数は、現在のプロセスの環境ブロックにコピーされます。

Unix に似たシステムでは、値が SetEnvironmentVariable(String, String, EnvironmentVariableTarget) または EnvironmentVariableTarget.MachineEnvironmentVariableTarget.User メソッドの呼び出しは無視されます。

Unix に似たシステムでは、値が SetEnvironmentVariable(String, String, EnvironmentVariableTarget)EnvironmentVariableTarget.Process メソッドの呼び出しは、読み込まれるネイティブ ライブラリには影響しません。 (逆に、ネイティブ ライブラリによって行われたインプロセス環境の変更は、マネージド呼び出し元には表示されません)。

value引数がnullされず、variable引数によって指定された環境変数が存在しない場合は、環境変数が作成され、valueの内容が割り当てられます。 存在する場合は、その値が変更されます。

variableに最初以外の 16 進ゼロ文字が含まれている場合、ゼロ文字の前の文字は環境変数名と見なされ、それ以降のすべての文字は無視されます。

valueに最初以外の 16 進ゼロ文字が含まれている場合は、ゼロ文字の前の文字が環境変数に割り当てられ、それ以降のすべての文字は無視されます。

valuenull (または .NET 9 より前のバージョンでは空) で、variable によって名前が付けられた環境変数が存在する場合、環境変数は削除されます。 value は、次のいずれかの条件で空と見なされます。

  • これは String.Empty
  • これは、値が U+0000 である 1 文字で構成されます。

variableが存在しない場合、操作を実行することはできませんが、エラーは発生しません。 targetMachine場合は、現在のプロセスやユーザーだけでなく、ローカル コンピューター全体に影響する環境変数を誤って削除する可能性があるため、注意してください。

Windows システム上の EnvironmentVariableTarget.Machine と EnvironmentVariableTarget.User

targetEnvironmentVariableTarget.Userされている場合、環境変数はローカル コンピューターのレジストリの HKEY_CURRENT_USER\Environment キーに格納されます。 また、現在のユーザーとして実行されているエクスプローラーのインスタンスにもコピーされます。 環境変数は、ユーザーがエクスプローラーから起動する新しいプロセスによって継承されます。

同様に、 targetEnvironmentVariableTarget.Machineされている場合、環境変数はローカル コンピューターのレジストリの HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment キーに格納されます。 エクスプローラーのすべてのインスタンスにもコピーされます。 環境変数は、エクスプローラーから起動された新しいプロセスによって継承されます。

targetUser または Machine の場合、他のアプリケーションには、Windows WM_SETTINGCHANGE メッセージによって設定操作が通知されます。

targetEnvironmentVariableTarget.UserまたはEnvironmentVariableTarget.Machineの場合は、valueの長さを 2048 文字未満にすることをお勧めします。

こちらもご覧ください

適用対象