다음을 통해 공유


Environment.SetEnvironmentVariable 메서드

정의

환경 변수를 만들거나 수정하거나 삭제합니다.

오버로드

SetEnvironmentVariable(String, String)

현재 프로세스에 저장된 환경 변수를 만들거나 수정하거나 삭제합니다.

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

현재 프로세스 또는 현재 사용자 또는 로컬 컴퓨터에 예약된 Windows 운영 체제 레지스트리 키에 저장된 환경 변수를 만들거나 수정하거나 삭제합니다.

SetEnvironmentVariable(String, String)

Source:
Environment.cs
Source:
Environment.cs
Source:
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할당할 값입니다.

예외

variable null.

variable 길이가 0인 문자열, 초기 16진수 0자(0x00) 또는 등호("=")를 포함합니다.

-또는-

variable 또는 value 길이가 32,767자보다 크거나 같습니다.

-또는-

이 작업을 실행하는 동안 오류가 발생했습니다.

호출자에게 이 작업을 수행하는 데 필요한 권한이 없습니다.

예제

다음 예제에서는 프로세스 환경 블록에서 Test1 환경 변수의 값을 검색하려고 시도합니다. 변수가 없으면 변수를 만들고 해당 값을 검색합니다. 이 예제에서는 변수의 값을 표시합니다. Windows 시스템에서 실행되는 .NET 구현의 경우 EnvironmentVariableTarget 열거형의 각 멤버와 함께 GetEnvironmentVariables(EnvironmentVariableTarget) 메서드를 호출하여 현재 프로세스 환경 블록에서만 변수를 검색할 수 있도록 합니다. (Unix와 유사한 시스템의 .NET 구현은 프로세스 환경 블록의 변수만 지원합니다.) 마지막으로, 예제에서 변수를 만든 경우 해당 변수를 삭제합니다.

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.

설명

이 메서드를 호출하는 것은 target 인수에 대한 EnvironmentVariableTarget.Process 값으로 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 오버로드를 호출하는 것과 같습니다.

Unix와 유사한 시스템에서 SetEnvironmentVariable(String, String) 메서드에 대한 호출은 로드되거나 로드될 네이티브 라이브러리에 영향을 주지 않습니다. 반대로 네이티브 라이브러리에서 수행한 In-Process 환경 수정은 관리되는 호출자가 볼 수 없습니다.

value 인수가 null 않고 variable 매개 변수로 명명된 환경 변수가 없으면 환경 변수가 만들어지고 value내용이 할당됩니다. 있는 경우 해당 값이 수정됩니다. 환경 변수는 현재 프로세스의 환경 블록에만 정의되므로 프로세스가 종료된 후에도 유지되지 않습니다.

variable 초기 16진수 0 문자가 포함되어 있으면 0 문자 앞의 문자는 환경 변수 이름으로 간주되며 모든 후속 문자는 무시됩니다.

value 초기 16진수 0 문자가 포함되어 있으면 0 문자 앞의 문자가 환경 변수에 할당되고 모든 후속 문자는 무시됩니다.

value null(또는 .NET 9 이전 버전에서는 비어 있음)이고 variable 이름이 지정된 환경 변수가 있으면 환경 변수가 삭제됩니다. variable 없는 경우 작업을 수행할 수 없는 경우에도 오류가 발생하지 않습니다. value 다음 조건 중에서 비어 있는 것으로 간주됩니다.

  • String.Empty.
  • 값이 U+0000인 단일 문자로 구성됩니다.

추가 정보

적용 대상

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

Source:
Environment.cs
Source:
Environment.cs
Source:
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

환경 변수의 위치를 지정하는 열거형 값 중 하나입니다.

예외

variable null.

variable 길이가 0인 문자열, 초기 16진수 0자(0x00) 또는 등호("=")를 포함합니다.

-또는-

variable 길이가 32,767자보다 크거나 같습니다.

-또는-

target EnvironmentVariableTarget 열거형의 멤버가 아닙니다.

-또는-

target Machine 또는 Uservariable 길이가 255보다 크거나 같습니다.

-또는-

target Process value 길이가 32,767자보다 크거나 같습니다.

-또는-

이 작업을 실행하는 동안 오류가 발생했습니다.

호출자에게 이 작업을 수행하는 데 필요한 권한이 없습니다.

예제

다음 예제에서는 EnvironmentVariableTarget.Process, EnvironmentVariableTarget.UserMachine 대상에 대한 환경 변수를 만들고 운영 체제 레지스트리에 사용자 및 컴퓨터 환경 변수가 포함되어 있는지 확인한 다음 환경 변수를 삭제합니다. 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.Machine 또는 EnvironmentVariableTarget.User 값이 있는 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 메서드에 대한 호출이 무시됩니다.

Unix와 유사한 시스템에서 값이 EnvironmentVariableTarget.ProcessSetEnvironmentVariable(String, String, EnvironmentVariableTarget) 메서드에 대한 호출은 로드되거나 로드될 네이티브 라이브러리에는 영향을 주지 않습니다. 반대로 네이티브 라이브러리에서 수행한 In-Process 환경 수정은 관리되는 호출자가 볼 수 없습니다.

value 인수가 null 않고 variable 인수로 명명된 환경 변수가 없으면 환경 변수가 만들어지고 value내용이 할당됩니다. 있는 경우 해당 값이 수정됩니다.

variable 초기 16진수 0 문자가 포함되어 있으면 0 문자 앞의 문자는 환경 변수 이름으로 간주되며 모든 후속 문자는 무시됩니다.

value 초기 16진수 0 문자가 포함되어 있으면 0 문자 앞의 문자가 환경 변수에 할당되고 모든 후속 문자는 무시됩니다.

value null(또는 .NET 9 이전 버전에서는 비어 있음)이고 variable 이름이 지정된 환경 변수가 있으면 환경 변수가 삭제됩니다. value 다음 조건 중에서 비어 있는 것으로 간주됩니다.

  • String.Empty.
  • 값이 U+0000인 단일 문자로 구성됩니다.

variable 없는 경우 작업을 수행할 수 없더라도 오류가 발생하지 않습니다. 현재 프로세스 또는 사용자뿐만 아니라 전체 로컬 컴퓨터에 영향을 주는 환경 변수를 실수로 삭제할 수 있으므로 targetMachine경우 주의해야 합니다.

Windows 시스템의 EnvironmentVariableTarget.Machine 및 EnvironmentVariableTarget.User

target EnvironmentVariableTarget.User환경 변수는 로컬 컴퓨터 레지스트리의 HKEY_CURRENT_USER\Environment 키에 저장됩니다. 또한 현재 사용자로 실행 중인 파일 탐색기의 인스턴스에도 복사됩니다. 그런 다음 사용자가 파일 탐색기에서 시작하는 모든 새 프로세스에서 환경 변수를 상속합니다.

마찬가지로 targetEnvironmentVariableTarget.Machine경우 환경 변수는 로컬 컴퓨터 레지스트리의 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment 키에 저장됩니다. 또한 파일 탐색기의 모든 인스턴스에 복사됩니다. 그런 다음 파일 탐색기에서 시작된 새 프로세스에서 환경 변수를 상속합니다.

target User 또는 Machine경우 다른 애플리케이션은 Windows WM_SETTINGCHANGE 메시지로 설정 작업에 대한 알림을 받습니다.

target EnvironmentVariableTarget.User 또는 EnvironmentVariableTarget.Machine경우 value 길이가 2048자 미만인 것이 좋습니다.

추가 정보

적용 대상