Environment.GetEnvironmentVariable 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
检索环境变量的值。
重载
| 名称 | 说明 |
|---|---|
| GetEnvironmentVariable(String) |
从当前进程检索环境变量的值。 |
| GetEnvironmentVariable(String, EnvironmentVariableTarget) |
从当前进程或当前用户或本地计算机的Windows操作系统注册表项中检索环境变量的值。 |
GetEnvironmentVariable(String)
- Source:
- Environment.cs
- Source:
- Environment.cs
- Source:
- Environment.cs
- Source:
- Environment.cs
- Source:
- Environment.cs
从当前进程检索环境变量的值。
public:
static System::String ^ GetEnvironmentVariable(System::String ^ variable);
public static string GetEnvironmentVariable(string variable);
public static string? GetEnvironmentVariable(string variable);
static member GetEnvironmentVariable : string -> string
Public Shared Function GetEnvironmentVariable (variable As String) As String
参数
- variable
- String
环境变量的名称。
返回
指定的环境变量 variable的值,或者 null 找不到环境变量。
例外
variable 是 null。
调用方没有执行此操作所需的权限。
示例
以下示例使用 GetEnvironmentVariable 方法检索包含Windows目录路径的 windir 环境变量。
using System;
using System.IO;
public class Example
{
public static void Main()
{
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
// Change the directory to %WINDIR%
Environment.CurrentDirectory = Environment.GetEnvironmentVariable("windir");
DirectoryInfo info = new DirectoryInfo(".");
Console.WriteLine("Directory Info: " + info.FullName);
}
else
{
Console.WriteLine("This example runs on Windows only.");
}
}
}
// The example displays output like the following on a .NET implementation running on Windows:
// Directory Info: C:\windows
// The example displays the following output on a .NET implementation on Unix-based systems:
// This example runs on Windows only.
open System
open System.IO
if Environment.OSVersion.Platform = PlatformID.Win32NT then
// Change the directory to %WINDIR%
Environment.CurrentDirectory <- Environment.GetEnvironmentVariable "windir"
let info = DirectoryInfo "."
printfn $"Directory Info: {info.FullName}"
else
printfn "This example runs on Windows only."
// The example displays output like the following on a .NET implementation running on Windows:
// Directory Info: C:\windows
// The example displays the following output on a .NET implementation on Unix-based systems:
// This example runs on Windows only.
Imports System.IO
Module Example
Public Sub Main()
If Environment.OSVersion.Platform = PlatformID.Win32NT Then
' Change the directory to %WINDIR%
Environment.CurrentDirectory = Environment.GetEnvironmentVariable("windir")
Dim info As New DirectoryInfo(".")
Console.WriteLine("Directory Info: " + info.FullName)
Else
Console.WriteLine("This example runs on Windows only.")
End If
End Sub
End Module
' The example displays output like the following on a .NET implementation running on Windows:
' Directory Info: C:\windows
' The example displays the following output on a .NET implementation on Unix-based systems:
' This example runs on Windows only.
以下示例尝试检索从进程环境块命名 Test1 的环境变量的值。 如果该变量不存在,该示例将创建它并检索其值。 该示例显示变量的值。 如果示例创建了变量,则它还调用 GetEnvironmentVariables(EnvironmentVariableTarget) 枚举的每个成员 EnvironmentVariableTarget 的方法,以确定只能从当前进程环境块检索该变量。 最后,如果示例创建了变量,则会将其删除。
using System;
public class Example
{
public static void Main()
{
string value;
bool toDelete = false;
// Check whether the environment variable exists.
value = Environment.GetEnvironmentVariable("Test1");
// If necessary, create it.
if (value == null)
{
Environment.SetEnvironmentVariable("Test1", "Value1");
toDelete = true;
// Now retrieve it.
value = Environment.GetEnvironmentVariable("Test1");
}
// Display the value.
Console.WriteLine($"Test1: {value}\n");
// Confirm that the value can only be retrieved from the process
// environment block if running on a Windows system.
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
Console.WriteLine("Attempting to retrieve Test1 from:");
foreach (EnvironmentVariableTarget enumValue in
Enum.GetValues(typeof(EnvironmentVariableTarget))) {
value = Environment.GetEnvironmentVariable("Test1", enumValue);
Console.WriteLine($" {enumValue}: {(value != null ? "found" : "not found")}");
}
Console.WriteLine();
}
// If we've created it, now delete it.
if (toDelete) {
Environment.SetEnvironmentVariable("Test1", null);
// Confirm the deletion.
if (Environment.GetEnvironmentVariable("Test1") == null)
Console.WriteLine("Test1 has been deleted.");
}
}
}
// The example displays the following output if run on a Windows system:
// Test1: Value1
//
// Attempting to retrieve Test1 from:
// Process: found
// User: not found
// Machine: not found
//
// Test1 has been deleted.
//
// The example displays the following output if run on a Unix-based system:
// Test1: Value1
//
// Test1 has been deleted.
module Example
open System
let mutable toDelete = false
// Check whether the environment variable exists.
let value =
let v = Environment.GetEnvironmentVariable "Test1"
// If necessary, create it.
if isNull v then
Environment.SetEnvironmentVariable("Test1", "Value1")
toDelete <- true
Environment.GetEnvironmentVariable "Test1"
else
v
// Display the value.
printfn $"Test1: {value}\n"
// Confirm that the value can only be retrieved from the process
// environment block if running on a Windows system.
if Environment.OSVersion.Platform = PlatformID.Win32NT then
printfn "Attempting to retrieve Test1 from:"
for enumValue in Enum.GetValues typeof<EnvironmentVariableTarget> do
let value = Environment.GetEnvironmentVariable("Test1", enumValue :?> EnvironmentVariableTarget)
printfn $""" {enumValue}: {if value <> null then "found" else "not found"}"""
printfn ""
// If we've created it, now delete it.
if toDelete then
Environment.SetEnvironmentVariable("Test1", null)
// Confirm the deletion.
if Environment.GetEnvironmentVariable "Test1" |> isNull then
printfn "Test1 has been deleted."
// The example displays the following output if run on a Windows system:
// Test1: Value1
//
// Attempting to retrieve Test1 from:
// Process: found
// User: not found
// Machine: not found
//
// Test1 has been deleted.
//
// The example displays the following output if run on a Unix-based system:
// Test1: Value1
//
// Test1 has been deleted.
Module Example
Public Sub Main()
Dim value As String
Dim toDelete As Boolean = False
' Check whether the environment variable exists.
value = Environment.GetEnvironmentVariable("Test1")
' If necessary, create it.
If value Is Nothing Then
Environment.SetEnvironmentVariable("Test1", "Value1")
toDelete = True
' Now retrieve it.
value = Environment.GetEnvironmentVariable("Test1")
End If
' Display the value.
Console.WriteLine($"Test1: {value}")
Console.WriteLine()
' Confirm that the value can only be retrieved from the process
' environment block if running on a Windows system.
If Environment.OSVersion.Platform = PlatformID.Win32NT Then
Console.WriteLine("Attempting to retrieve Test1 from:")
For Each enumValue As EnvironmentVariableTarget In
[Enum].GetValues(GetType(EnvironmentVariableTarget))
value = Environment.GetEnvironmentVariable("Test1", enumValue)
Console.WriteLine($" {enumValue}: {If(value IsNot Nothing, "found", "not found")}")
Next
Console.WriteLine()
End If
' If we've created it, now delete it.
If toDelete Then
Environment.SetEnvironmentVariable("Test1", Nothing)
' Confirm the deletion.
If Environment.GetEnvironmentVariable("Test1") = Nothing Then
Console.WriteLine("Test1 has been deleted.")
End If
End If
End Sub
End Module
' The example displays the following output if run on a Windows system:
' Test1: Value1
'
' Attempting to retrieve Test1 from:
' Process: found
' User: not found
' Machine: not found
'
' Test1 has been deleted.
'
' The example displays the following output if run on a Unix-based system:
' Test1: Value1
'
' Test1 has been deleted.
注解
该方法 GetEnvironmentVariable 从当前进程检索环境变量的值。
环境变量名称在类似 Unix 的系统上区分大小写,但在 Windows 上不区分大小写。
注释
托管调用方看不到由本机库在进程内部所做的环境修改。 相反,本机库看不到托管调用方所做的这种修改。
GetEnvironmentVariable(String) 方法
该方法 GetEnvironmentVariable(String) 仅从当前进程的环境块中检索环境变量。 这相当于调用 GetEnvironmentVariable(String, EnvironmentVariableTarget) 方法,并将 target 的值设为 EnvironmentVariableTarget.Process。
若要检索所有环境变量及其值,请调用该方法 GetEnvironmentVariables 。
在 Windows 系统上
在 Windows 系统上,当前进程的环境块包括:
由创建它的父进程提供的所有环境变量。 例如,从控制台窗口启动的 .NET 应用程序继承控制台窗口的所有环境变量。
如果没有父进程,则改用每台计算机和每用户环境变量。 例如,新的控制台窗口具有启动时定义的所有每台计算机和每用户环境变量。
在进程运行时,通过调用SetEnvironmentVariable(String, String)或SetEnvironmentVariable(String, String, EnvironmentVariableTarget)方法,并指定
target值为EnvironmentVariableTarget.Process,将任何变量添加到进程块中。 这些环境变量一直持续到 .NET 应用程序终止。
如果在进程启动后创建环境变量,则可以使用此方法仅检索通过调用 SetEnvironmentVariable(String, String) 方法或 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 值为 target .EnvironmentVariableTarget.Process的方法创建的变量。
在类似 Unix 的系统上
在类似 Unix 的系统上,当前进程的环境块包含以下环境变量:
由创建它的父进程提供的所有环境变量。 对于从 shell 启动的 .NET 应用程序,这包括 shell 中定义的所有环境变量。
在进程运行时,通过调用SetEnvironmentVariable(String, String)或SetEnvironmentVariable(String, String, EnvironmentVariableTarget)方法,并指定
target值为EnvironmentVariableTarget.Process,将任何变量添加到进程块中。 这些环境变量一直持续到 .NET 应用程序终止。
类似 Unix 的系统上的 .NET 不支持每台计算机或每用户环境变量。
GetEnvironmentVariable(String, EnvironmentVariableTarget) 方法
若要检索所有环境变量及其值,请调用该方法 GetEnvironmentVariables 。
在 Windows 系统上
在 Windows 上,该 target 参数指定是从当前进程还是从当前用户或本地计算机的 Windows作系统注册表项中检索环境变量。 所有每用户和每台计算机环境变量都会自动复制到当前进程的环境块中,与创建 .NET 进程的父进程可用的任何其他环境变量一样。 但是,通过调用 SetEnvironmentVariable(String, String) 方法或 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 方法,并将 target 值设置为 EnvironmentVariableTarget.Process,添加到当前进程的环境块中的环境变量仅在进程的持续时间内持续存在。
在类似 Unix 的系统上
在类似 Unix 的系统上,该方法 GetEnvironmentVariable(String, EnvironmentVariableTarget) 仅支持 target 值 EnvironmentVariableTarget.Process 。 不支持 target 值为 EnvironmentVariableTarget.Machine 或 EnvironmentVariableTarget.User 的调用,并返回 null。
每个进程环境变量包括:
从父进程继承的进程,通常是用于调用
dotnet.exe或启动 .NET 应用程序的 shell。通过调用 SetEnvironmentVariable(String, String) 方法或 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 方法并将
target值设置为 EnvironmentVariableTarget.Process 来定义的那些内容。 这些环境变量仅在dotnet进程或 .NET 应用程序终止之前保留。
另请参阅
适用于
GetEnvironmentVariable(String, EnvironmentVariableTarget)
- Source:
- Environment.cs
- Source:
- Environment.cs
- Source:
- Environment.cs
- Source:
- Environment.cs
- Source:
- Environment.cs
从当前进程或当前用户或本地计算机的Windows操作系统注册表项中检索环境变量的值。
public:
static System::String ^ GetEnvironmentVariable(System::String ^ variable, EnvironmentVariableTarget target);
public static string? GetEnvironmentVariable(string variable, EnvironmentVariableTarget target);
public static string GetEnvironmentVariable(string variable, EnvironmentVariableTarget target);
static member GetEnvironmentVariable : string * EnvironmentVariableTarget -> string
Public Shared Function GetEnvironmentVariable (variable As String, target As EnvironmentVariableTarget) As String
参数
- variable
- String
环境变量的名称。
- target
- EnvironmentVariableTarget
其中一个 EnvironmentVariableTarget 值。 在类似 Unix 的系统上运行的.NET仅支持 Process。
返回
由参数variable指定的target环境变量的值,或者null找不到环境变量。
例外
variable 是 null。
target 不是有效 EnvironmentVariableTarget 值。
调用方没有执行此操作所需的权限。
示例
以下示例为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...
注解
该方法 GetEnvironmentVariable 从当前进程检索环境变量的值。
环境变量名称在类似 Unix 的系统上区分大小写,但在 Windows 上不区分大小写。
注释
托管调用方看不到由本机库在进程内部所做的环境修改。 相反,本机库看不到托管调用方所做的这种修改。
GetEnvironmentVariable(String) 方法
该方法 GetEnvironmentVariable(String) 仅从当前进程的环境块中检索环境变量。 这相当于调用 GetEnvironmentVariable(String, EnvironmentVariableTarget) 方法,并将 target 的值设为 EnvironmentVariableTarget.Process。
若要检索所有环境变量及其值,请调用该方法 GetEnvironmentVariables 。
在 Windows 系统上
在 Windows 系统上,当前进程的环境块包括:
由创建它的父进程提供的所有环境变量。 例如,从控制台窗口启动的 .NET 应用程序继承控制台窗口的所有环境变量。
如果没有父进程,则改用每台计算机和每用户环境变量。 例如,新的控制台窗口具有启动时定义的所有每台计算机和每用户环境变量。
在进程运行时,通过调用SetEnvironmentVariable(String, String)或SetEnvironmentVariable(String, String, EnvironmentVariableTarget)方法,并指定
target值为EnvironmentVariableTarget.Process,将任何变量添加到进程块中。 这些环境变量一直持续到 .NET 应用程序终止。
如果在进程启动后创建环境变量,则可以使用此方法仅检索通过调用 SetEnvironmentVariable(String, String) 方法或 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 值为 target .EnvironmentVariableTarget.Process的方法创建的变量。
在类似 Unix 的系统上
在类似 Unix 的系统上,当前进程的环境块包含以下环境变量:
由创建它的父进程提供的所有环境变量。 对于从 shell 启动的 .NET 应用程序,这包括 shell 中定义的所有环境变量。
在进程运行时,通过调用SetEnvironmentVariable(String, String)或SetEnvironmentVariable(String, String, EnvironmentVariableTarget)方法,并指定
target值为EnvironmentVariableTarget.Process,将任何变量添加到进程块中。 这些环境变量一直持续到 .NET 应用程序终止。
类似 Unix 的系统上的 .NET 不支持每台计算机或每用户环境变量。
GetEnvironmentVariable(String, EnvironmentVariableTarget) 方法
若要检索所有环境变量及其值,请调用该方法 GetEnvironmentVariables 。
在 Windows 系统上
在 Windows 上,该 target 参数指定是从当前进程还是从当前用户或本地计算机的 Windows作系统注册表项中检索环境变量。 所有每用户和每台计算机环境变量都会自动复制到当前进程的环境块中,与创建 .NET 进程的父进程可用的任何其他环境变量一样。 但是,通过调用 SetEnvironmentVariable(String, String) 方法或 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 方法,并将 target 值设置为 EnvironmentVariableTarget.Process,添加到当前进程的环境块中的环境变量仅在进程的持续时间内持续存在。
在类似 Unix 的系统上
在类似 Unix 的系统上,该方法 GetEnvironmentVariable(String, EnvironmentVariableTarget) 仅支持 target 值 EnvironmentVariableTarget.Process 。 不支持 target 值为 EnvironmentVariableTarget.Machine 或 EnvironmentVariableTarget.User 的调用,并返回 null。
每个进程环境变量包括:
从父进程继承的进程,通常是用于调用
dotnet.exe或启动 .NET 应用程序的 shell。通过调用 SetEnvironmentVariable(String, String) 方法或 SetEnvironmentVariable(String, String, EnvironmentVariableTarget) 方法并将
target值设置为 EnvironmentVariableTarget.Process 来定义的那些内容。 这些环境变量仅在dotnet进程或 .NET 应用程序终止之前保留。
另请参阅
- SetEnvironmentVariable(String, String, EnvironmentVariableTarget)
- GetEnvironmentVariables()
- EnvironmentVariableTarget