Environment.SetEnvironmentVariable 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
환경 변수를 만들거나 수정하거나 삭제합니다.
오버로드
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.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와 유사한 시스템에서는 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
없는 경우 작업을 수행할 수 없더라도 오류가 발생하지 않습니다. 현재 프로세스 또는 사용자뿐만 아니라 전체 로컬 컴퓨터에 영향을 주는 환경 변수를 실수로 삭제할 수 있으므로 target
Machine경우 주의해야 합니다.
Windows 시스템의 EnvironmentVariableTarget.Machine 및 EnvironmentVariableTarget.User
target
EnvironmentVariableTarget.User환경 변수는 로컬 컴퓨터 레지스트리의 HKEY_CURRENT_USER\Environment 키에 저장됩니다. 또한 현재 사용자로 실행 중인 파일 탐색기의 인스턴스에도 복사됩니다. 그런 다음 사용자가 파일 탐색기에서 시작하는 모든 새 프로세스에서 환경 변수를 상속합니다.
마찬가지로 target
EnvironmentVariableTarget.Machine경우 환경 변수는 로컬 컴퓨터 레지스트리의 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment 키에 저장됩니다. 또한 파일 탐색기의 모든 인스턴스에 복사됩니다. 그런 다음 파일 탐색기에서 시작된 새 프로세스에서 환경 변수를 상속합니다.
target
User 또는 Machine경우 다른 애플리케이션은 Windows WM_SETTINGCHANGE
메시지로 설정 작업에 대한 알림을 받습니다.
target
EnvironmentVariableTarget.User 또는 EnvironmentVariableTarget.Machine경우 value
길이가 2048자 미만인 것이 좋습니다.
추가 정보
- GetEnvironmentVariable(String, EnvironmentVariableTarget)
- GetEnvironmentVariables(EnvironmentVariableTarget)
- EnvironmentVariableTarget
적용 대상
.NET