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 에 빈 문자열, 초기 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.

설명

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

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

인수가 value 비어 있지 않고(빈 값의 정의는 이 섹션의 뒷부분에서 환경 변수 삭제에 대한 설명 참조) 매개 변수에 의해 명명된 variable 환경 변수가 없는 경우 환경 변수가 만들어지고 의 value내용이 할당됩니다. 있는 경우 해당 값이 수정됩니다. 환경 변수는 현재 프로세스의 환경 블록에만 정의되므로 프로세스가 종료된 후에는 유지되지 않습니다.

초기 16진수 0이 아닌 문자를 포함하는 경우 variable 0 문자 앞의 문자는 환경 변수 이름으로 간주되고 모든 후속 문자는 무시됩니다.

초기 16진수 0이 아닌 문자를 포함하는 경우 value 0 문자 앞의 문자가 환경 변수에 할당되고 모든 후속 문자는 무시됩니다.

value 가 비어 있고 로 명명 variable 된 환경 변수가 있으면 환경 변수가 삭제됩니다. 가 없으면 variable 작업을 수행할 수 없더라도 오류가 발생하지 않습니다. value 는 다음 조건 중에서 비어 있는 것으로 간주됩니다.

  • 입니다 null.
  • 입니다 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 에 빈 문자열, 초기 16진수 0 문자(0x00) 또는 등호("=")가 포함되어 있습니다.

또는

variable의 길이가 32,767자보다 크거나 같은 경우

또는

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

또는

targetMachine 또는 User이고, variable 의 길이가 255보다 크거나 같습니다.

또는

targetProcess 이고 value 의 길이가 32,767자보다 크거나 같습니다.

또는

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

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

예제

다음 예제에서는 , EnvironmentVariableTarget.UserMachine 대상에 대한 EnvironmentVariableTarget.Process환경 변수를 만들고 운영 체제 레지스트리에 사용자 및 컴퓨터 환경 변수가 포함되어 있는지 확인한 다음 환경 변수를 삭제합니다. Unix와 유사한 시스템의 .NET은 사용자별 및 머신별 환경 변수만 지원하지 않으므로 및 값 EnvironmentVariableTarget.ProcessSetEnvironmentVariable(String, String)SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 환경 변수를 프로세스 환경 블록에 성공적으로 저장하기 때문입니다.

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.Process 이 인 메서드에 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 대한 호출은 로드되거나 로드될 네이티브 라이브러리에 영향을 주지 않습니다. (반대로 네이티브 라이브러리에서 수행한 In-Process 환경 수정은 관리되는 호출자가 볼 수 없습니다.)

인수가 value 비어 있지 않고(빈 값의 정의는 이 섹션의 뒷부분에서 환경 변수 삭제에 대한 설명 참조) 인수로 명명된 variable 환경 변수가 없는 경우 환경 변수가 만들어지고 의 value내용이 할당됩니다. 있는 경우 해당 값이 수정됩니다.

초기 16진수 0이 아닌 문자를 포함하는 경우 variable 0 문자 앞의 문자는 환경 변수 이름으로 간주되고 모든 후속 문자는 무시됩니다.

초기 16진수 0이 아닌 문자를 포함하는 경우 value 0 문자 앞의 문자가 환경 변수에 할당되고 모든 후속 문자는 무시됩니다.

value 가 비어 있고 로 명명 variable 된 환경 변수가 있으면 환경 변수가 삭제됩니다. value 는 다음 조건 중에서 비어 있는 것으로 간주됩니다.

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

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

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

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

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

경우 target 됩니다 User 또는 Machine에 Windows에서 다른 애플리케이션 설정 작업의 알림이 표시 됩니다 WM_SETTINGCHANGE 메시지입니다.

가 또는 EnvironmentVariableTarget.MachineEnvironmentVariableTarget.Usertarget 길이 value 가 2048자 미만인 것이 좋습니다.

추가 정보

적용 대상