Environment 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供有关当前环境和平台的信息以及操作它们的方法。 此类不能被继承。
public ref class Environment abstract sealedpublic ref class Environment sealedpublic static class Environmentpublic sealed class Environment[System.Runtime.InteropServices.ComVisible(true)]
public static class Environmenttype Environment = class[<System.Runtime.InteropServices.ComVisible(true)>]
type Environment = classPublic Class EnvironmentPublic NotInheritable Class Environment- 继承
- 
				Environment
- 属性
示例
以下示例显示有关当前环境的信息列表。
// Sample for Environment class summary
using namespace System;
using namespace System::Collections;
int main()
{
   String^ str;
   String^ nl = Environment::NewLine;
   
   //
   Console::WriteLine();
   Console::WriteLine( "-- Environment members --" );
   
   //  Invoke this sample with an arbitrary set of command line arguments.
   Console::WriteLine( "CommandLine: {0}", Environment::CommandLine );
   array<String^>^arguments = Environment::GetCommandLineArgs();
   Console::WriteLine( "GetCommandLineArgs: {0}", String::Join( ", ", arguments ) );
   
   //  <-- Keep this information secure! -->
   Console::WriteLine( "CurrentDirectory: {0}", Environment::CurrentDirectory );
   Console::WriteLine( "ExitCode: {0}", Environment::ExitCode );
   Console::WriteLine( "HasShutdownStarted: {0}", Environment::HasShutdownStarted );
   
   //  <-- Keep this information secure! -->
   Console::WriteLine( "MachineName: {0}", Environment::MachineName );
   Console::WriteLine( "NewLine: {0}  first line {0}  second line {0}  third line", Environment::NewLine );
   Console::WriteLine( "OSVersion: {0}", Environment::OSVersion );
   Console::WriteLine( "StackTrace: ' {0}'", Environment::StackTrace );
   
   //  <-- Keep this information secure! -->
   Console::WriteLine( "SystemDirectory: {0}", Environment::SystemDirectory );
   Console::WriteLine( "TickCount: {0}", Environment::TickCount );
   
   //  <-- Keep this information secure! -->
   Console::WriteLine( "UserDomainName: {0}", Environment::UserDomainName );
   Console::WriteLine( "UserInteractive: {0}", Environment::UserInteractive );
   
   //  <-- Keep this information secure! -->
   Console::WriteLine( "UserName: {0}", Environment::UserName );
   Console::WriteLine( "Version: {0}", Environment::Version );
   Console::WriteLine( "WorkingSet: {0}", Environment::WorkingSet );
   
   //  No example for Exit(exitCode) because doing so would terminate this example.
   //  <-- Keep this information secure! -->
   String^ query = "My system drive is %SystemDrive% and my system root is %SystemRoot%";
   str = Environment::ExpandEnvironmentVariables( query );
   Console::WriteLine( "ExpandEnvironmentVariables: {0} {1}", nl, str );
   Console::WriteLine( "GetEnvironmentVariable: {0}  My temporary directory is {1}.", nl, Environment::GetEnvironmentVariable( "TEMP" ) );
   Console::WriteLine( "GetEnvironmentVariables: " );
   IDictionary^ environmentVariables = Environment::GetEnvironmentVariables();
   IEnumerator^ myEnum = environmentVariables->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      DictionaryEntry^ de = safe_cast<DictionaryEntry^>(myEnum->Current);
      Console::WriteLine( " {0} = {1}", de->Key, de->Value );
   }
   Console::WriteLine( "GetFolderPath: {0}", Environment::GetFolderPath( Environment::SpecialFolder::System ) );
   array<String^>^drives = Environment::GetLogicalDrives();
   Console::WriteLine( "GetLogicalDrives: {0}", String::Join( ", ", drives ) );
}
/*
This example produces results similar to the following:
(Any result that is lengthy or reveals information that should remain 
secure has been omitted and marked S"!---OMITTED---!".)
C:\>env0 ARBITRARY TEXT
-- Environment members --
CommandLine: env0 ARBITRARY TEXT
GetCommandLineArgs: env0, ARBITRARY, TEXT
CurrentDirectory: C:\Documents and Settings\!---OMITTED---!
ExitCode: 0
HasShutdownStarted: False
MachineName: !---OMITTED---!
NewLine:
  first line
  second line
  third line
OSVersion: Microsoft Windows NT 5.1.2600.0
StackTrace: '   at System::Environment::GetStackTrace(Exception e)
   at System::Environment::GetStackTrace(Exception e)
   at System::Environment::get_StackTrace()
   at Sample::Main()'
SystemDirectory: C:\WINNT\System32
TickCount: 17995355
UserDomainName: !---OMITTED---!
UserInteractive: True
UserName: !---OMITTED---!
Version: !---OMITTED---!
WorkingSet: 5038080
ExpandEnvironmentVariables:
  My system drive is C: and my system root is C:\WINNT
GetEnvironmentVariable:
  My temporary directory is C:\DOCUME~1\!---OMITTED---!\LOCALS~1\Temp.
GetEnvironmentVariables:
  !---OMITTED---!
GetFolderPath: C:\WINNT\System32
GetLogicalDrives: A:\, C:\, D:\
*/
// Sample for Environment class summary
using System;
using System.Collections;
class Sample
{
    public static void Main()
    {
        string str;
        string nl = Environment.NewLine;
        //
        Console.WriteLine();
        Console.WriteLine("-- Environment members --");
        //  Invoke this sample with an arbitrary set of command line arguments.
        Console.WriteLine("CommandLine: {0}", Environment.CommandLine);
        string[] arguments = Environment.GetCommandLineArgs();
        Console.WriteLine("GetCommandLineArgs: {0}", String.Join(", ", arguments));
        //  <-- Keep this information secure! -->
        Console.WriteLine("CurrentDirectory: {0}", Environment.CurrentDirectory);
        Console.WriteLine("ExitCode: {0}", Environment.ExitCode);
        Console.WriteLine("HasShutdownStarted: {0}", Environment.HasShutdownStarted);
        //  <-- Keep this information secure! -->
        Console.WriteLine("MachineName: {0}", Environment.MachineName);
        Console.WriteLine("NewLine: {0}  first line{0}  second line{0}  third line",
                              Environment.NewLine);
        Console.WriteLine("OSVersion: {0}", Environment.OSVersion.ToString());
        Console.WriteLine("StackTrace: '{0}'", Environment.StackTrace);
        //  <-- Keep this information secure! -->
        Console.WriteLine("SystemDirectory: {0}", Environment.SystemDirectory);
        Console.WriteLine("TickCount: {0}", Environment.TickCount);
        //  <-- Keep this information secure! -->
        Console.WriteLine("UserDomainName: {0}", Environment.UserDomainName);
        Console.WriteLine("UserInteractive: {0}", Environment.UserInteractive);
        //  <-- Keep this information secure! -->
        Console.WriteLine("UserName: {0}", Environment.UserName);
        Console.WriteLine("Version: {0}", Environment.Version.ToString());
        Console.WriteLine("WorkingSet: {0}", Environment.WorkingSet);
        //  No example for Exit(exitCode) because doing so would terminate this example.
        //  <-- Keep this information secure! -->
        string query = "My system drive is %SystemDrive% and my system root is %SystemRoot%";
        str = Environment.ExpandEnvironmentVariables(query);
        Console.WriteLine("ExpandEnvironmentVariables: {0}  {1}", nl, str);
        Console.WriteLine("GetEnvironmentVariable: {0}  My temporary directory is {1}.", nl,
                               Environment.GetEnvironmentVariable("TEMP"));
        Console.WriteLine("GetEnvironmentVariables: ");
        IDictionary environmentVariables = Environment.GetEnvironmentVariables();
        foreach (DictionaryEntry de in environmentVariables)
        {
            Console.WriteLine("  {0} = {1}", de.Key, de.Value);
        }
        Console.WriteLine("GetFolderPath: {0}",
                     Environment.GetFolderPath(Environment.SpecialFolder.System));
        string[] drives = Environment.GetLogicalDrives();
        Console.WriteLine("GetLogicalDrives: {0}", String.Join(", ", drives));
    }
}
/*
This example produces results similar to the following:
(Any result that is lengthy or reveals information that should remain
secure has been omitted and marked "!---OMITTED---!".)
C:\>env0 ARBITRARY TEXT
-- Environment members --
CommandLine: env0 ARBITRARY TEXT
GetCommandLineArgs: env0, ARBITRARY, TEXT
CurrentDirectory: C:\Documents and Settings\!---OMITTED---!
ExitCode: 0
HasShutdownStarted: False
MachineName: !---OMITTED---!
NewLine:
  first line
  second line
  third line
OSVersion: Microsoft Windows NT 5.1.2600.0
StackTrace: '   at System.Environment.GetStackTrace(Exception e)
   at System.Environment.GetStackTrace(Exception e)
   at System.Environment.get_StackTrace()
   at Sample.Main()'
SystemDirectory: C:\WINNT\System32
TickCount: 17995355
UserDomainName: !---OMITTED---!
UserInteractive: True
UserName: !---OMITTED---!
Version: !---OMITTED---!
WorkingSet: 5038080
ExpandEnvironmentVariables:
  My system drive is C: and my system root is C:\WINNT
GetEnvironmentVariable:
  My temporary directory is C:\DOCUME~1\!---OMITTED---!\LOCALS~1\Temp.
GetEnvironmentVariables:
  !---OMITTED---!
GetFolderPath: C:\WINNT\System32
GetLogicalDrives: A:\, C:\, D:\
*/
// Sample for Environment class summary
open System
open System.Collections
let nl = Environment.NewLine
printfn ""
printfn "-- Environment members --"
//  Invoke this sample with an arbitrary set of command line arguments.
printfn $"CommandLine: {Environment.CommandLine}"
Environment.GetCommandLineArgs()
|> String.concat ", "
|> printfn "GetCommandLineArgs: %s"
//  <-- Keep this information secure! -->
printfn $"CurrentDirectory: {Environment.CurrentDirectory}"
printfn $"ExitCode: {Environment.ExitCode}"
printfn $"HasShutdownStarted: {Environment.HasShutdownStarted}"
//  <-- Keep this information secure! -->
printfn $"MachineName: {Environment.MachineName}"
printfn $"NewLine: {nl}  first line{nl}  second line{nl}  third line"
printfn $"OSVersion: {Environment.OSVersion}"
printfn $"StackTrace: '{Environment.StackTrace}'"
//  <-- Keep this information secure! -->
printfn $"SystemDirectory: {Environment.SystemDirectory}"
printfn $"TickCount: {Environment.TickCount}"
//  <-- Keep this information secure! -->
printfn $"UserDomainName: {Environment.UserDomainName}"
printfn $"UserInteractive: {Environment.UserInteractive}"
//  <-- Keep this information secure! -->
printfn $"UserName: {Environment.UserName}"
printfn $"Version: {Environment.Version}"
printfn $"WorkingSet: {Environment.WorkingSet}"
//  No example for Exit(exitCode) because doing so would terminate this example.
//  <-- Keep this information secure! -->
let query = "My system drive is %SystemDrive% and my system root is %SystemRoot%"
let str = Environment.ExpandEnvironmentVariables query
printfn $"ExpandEnvironmentVariables: {nl}  {str}"
printfn $"""GetEnvironmentVariable: {nl}  My temporary directory is {Environment.GetEnvironmentVariable "TEMP"}."""
printfn "GetEnvironmentVariables: "
let environmentVariables = Environment.GetEnvironmentVariables()
for de in environmentVariables do
    let de = de :?> DictionaryEntry
    printfn $"  {de.Key} = {de.Value}"
printfn $"GetFolderPath: {Environment.GetFolderPath Environment.SpecialFolder.System}"
Environment.GetLogicalDrives()
|> String.concat ", "
|> printfn "GetLogicalDrives: %s"
// This example produces results similar to the following:
//     (Any result that is lengthy or reveals information that should remain
//     secure has been omitted and marked "!---OMITTED---!".)
//     
//     C:\>env0 ARBITRARY TEXT
//     
//     -- Environment members --
//     CommandLine: env0 ARBITRARY TEXT
//     GetCommandLineArgs: env0, ARBITRARY, TEXT
//     CurrentDirectory: C:\Documents and Settings\!---OMITTED---!
//     ExitCode: 0
//     HasShutdownStarted: False
//     MachineName: !---OMITTED---!
//     NewLine:
//       first line
//       second line
//       third line
//     OSVersion: Microsoft Windows NT 5.1.2600.0
//     StackTrace: '   at System.Environment.GetStackTrace(Exception e)
//        at System.Environment.GetStackTrace(Exception e)
//        at System.Environment.get_StackTrace()
//        at Sample.Main()'
//     SystemDirectory: C:\WINNT\System32
//     TickCount: 17995355
//     UserDomainName: !---OMITTED---!
//     UserInteractive: True
//     UserName: !---OMITTED---!
//     Version: !---OMITTED---!
//     WorkingSet: 5038080
//     ExpandEnvironmentVariables:
//       My system drive is C: and my system root is C:\WINNT
//     GetEnvironmentVariable:
//       My temporary directory is C:\DOCUME~1\!---OMITTED---!\LOCALS~1\Temp.
//     GetEnvironmentVariables:
//       !---OMITTED---!
//     GetFolderPath: C:\WINNT\System32
//     GetLogicalDrives: A:\, C:\, D:\
' Sample for Environment class summary
Imports System.Collections
Class Sample
   Public Shared Sub Main()
      Dim str As [String]
      Dim nl As [String] = Environment.NewLine
      '
      Console.WriteLine()
      Console.WriteLine("-- Environment members --")
      
      '  Invoke this sample with an arbitrary set of command line arguments.
      Console.WriteLine("CommandLine: {0}", Environment.CommandLine)
      
      Dim arguments As [String]() = Environment.GetCommandLineArgs()
      Console.WriteLine("GetCommandLineArgs: {0}", [String].Join(", ", arguments))
      
      '  <-- Keep this information secure! -->
      Console.WriteLine("CurrentDirectory: {0}", Environment.CurrentDirectory)
      
      Console.WriteLine("ExitCode: {0}", Environment.ExitCode)
      
      Console.WriteLine("HasShutdownStarted: {0}", Environment.HasShutdownStarted)
      
      '  <-- Keep this information secure! -->
      Console.WriteLine("MachineName: {0}", Environment.MachineName)
      
      Console.WriteLine("NewLine: {0}  first line{0}  second line{0}" & _
                        "  third line", Environment.NewLine)
      
      Console.WriteLine("OSVersion: {0}", Environment.OSVersion.ToString())
      
      Console.WriteLine("StackTrace: '{0}'", Environment.StackTrace)
      
      '  <-- Keep this information secure! -->
      Console.WriteLine("SystemDirectory: {0}", Environment.SystemDirectory)
      
      Console.WriteLine("TickCount: {0}", Environment.TickCount)
      
      '  <-- Keep this information secure! -->
      Console.WriteLine("UserDomainName: {0}", Environment.UserDomainName)
      
      Console.WriteLine("UserInteractive: {0}", Environment.UserInteractive)
      
      '  <-- Keep this information secure! -->
      Console.WriteLine("UserName: {0}", Environment.UserName)
      
      Console.WriteLine("Version: {0}", Environment.Version.ToString())
      
      Console.WriteLine("WorkingSet: {0}", Environment.WorkingSet)
      
      '  No example for Exit(exitCode) because doing so would terminate this example.
      '  <-- Keep this information secure! -->
      Dim query As [String] = "My system drive is %SystemDrive% and my" & _
                              " system root is %SystemRoot%"
      str = Environment.ExpandEnvironmentVariables(query)
      Console.WriteLine("ExpandEnvironmentVariables: {0}  {1}", nl, str)
      
      Console.WriteLine("GetEnvironmentVariable: {0}  My temporary directory is {1}.", _
                        nl, Environment.GetEnvironmentVariable("TEMP"))
      
      Console.WriteLine("GetEnvironmentVariables: ")
      Dim environmentVariables As IDictionary = Environment.GetEnvironmentVariables()
      Dim de As DictionaryEntry
      For Each de In environmentVariables
         Console.WriteLine("  {0} = {1}", de.Key, de.Value)
      Next de
      
      Console.WriteLine("GetFolderPath: {0}", _
              Environment.GetFolderPath(Environment.SpecialFolder.System))
      
      Dim drives As [String]() = Environment.GetLogicalDrives()
      Console.WriteLine("GetLogicalDrives: {0}", [String].Join(", ", drives))
   End Sub
End Class
'
'This example produces results similar to the following:
'(Any result that is lengthy or reveals information that should remain 
'secure has been omitted and marked "!---OMITTED---!".)
'
'C:\>env0 ARBITRARY TEXT
'
'-- Environment members --
'CommandLine: env0 ARBITRARY TEXT
'GetCommandLineArgs: env0, ARBITRARY, TEXT
'CurrentDirectory: C:\Documents and Settings\!---OMITTED---!
'ExitCode: 0
'HasShutdownStarted: False
'MachineName: !---OMITTED---!
'NewLine:
'  first line
'  second line
'  third line
'OSVersion: Microsoft Windows NT 5.1.2600.0
'StackTrace: '   at System.Environment.GetStackTrace(Exception e)
'   at System.Environment.GetStackTrace(Exception e)
'   at System.Environment.get_StackTrace()
'   at Sample.Main()'
'SystemDirectory: C:\WINNT\System32
'TickCount: 17995355
'UserDomainName: !---OMITTED---!
'UserInteractive: True
'UserName: !---OMITTED---!
'Version: !---OMITTED---!
'WorkingSet: 5038080
'ExpandEnvironmentVariables:
'  My system drive is C: and my system root is C:\WINNT
'GetEnvironmentVariable:
'  My temporary directory is C:\DOCUME~1\!---OMITTED---!\LOCALS~1\Temp.
'GetEnvironmentVariables: 
'  !---OMITTED---!
'GetFolderPath: C:\WINNT\System32
'GetLogicalDrives: A:\, C:\, D:\
'
注解
Environment使用 类检索诸如命令行参数、退出代码、环境变量设置、调用堆栈的内容、自上次系统启动以来的时间和公共语言运行时版本等信息。
属性
| CommandLine | 获取该进程的命令行。 | 
| CpuUsage | 提供有关当前环境和平台的信息以及操作它们的方法。 此类不能被继承。 | 
| CurrentDirectory | 获取或设置当前工作目录的完全限定路径。 | 
| CurrentManagedThreadId | 获取当前托管线程的唯一标识符。 | 
| ExitCode | 获取或设置进程的退出代码。 | 
| HasShutdownStarted | 获取一个值,该值指示当前的应用程序域是否正在卸载或者公共语言运行时 (CLR) 是否正在关闭。 | 
| Is64BitOperatingSystem | 获取一个值,该值指示当前操作系统是否为 64 位操作系统。 | 
| Is64BitProcess | 获取一个值,该值指示当前进程是否为 64 位进程。 | 
| IsPrivilegedProcess | 获取一个值,该值指示当前进程是否有权执行与安全相关的功能。 | 
| MachineName | 获取此本地计算机的 NetBIOS 名称。 | 
| NewLine | 获取为此环境定义的换行字符串。 | 
| OSVersion | 获取当前平台标识符和版本号。 | 
| ProcessId | 获取当前进程的唯一标识符。 | 
| ProcessorCount | 获取当前进程可用的处理器数。 | 
| ProcessPath | 返回启动当前正在执行进程的可执行文件的路径。 
               | 
| StackTrace | 获取当前的堆栈跟踪信息。 | 
| SystemDirectory | 获取系统目录的完全限定路径。 | 
| SystemPageSize | 获取操作系统的内存页的字节数。 | 
| TickCount | 获取系统启动后经过的毫秒数。 | 
| TickCount64 | 获取系统启动后经过的毫秒数。 | 
| UserDomainName | 获取与当前用户关联的网络域名。 | 
| UserInteractive | 获取一个值,用以指示当前进程是否在用户交互模式中运行。 | 
| UserName | 获取与当前线程相关联的用户的用户名。 | 
| Version | 获取由公共语言运行时的主版本号、次要版本号、内部版本号和修订号组成的版本。 | 
| WorkingSet | 获取映射到进程上下文的物理内存量。 | 
方法
| Exit(Int32) | 终止此进程,并将退出代码返回到操作系统。 | 
| ExpandEnvironmentVariables(String) | 将嵌入到指定字符串中的每个环境变量的名称替换为该变量的值的等效字符串,然后返回结果字符串。 | 
| FailFast(String) | 在报告错误消息之前立即终止进程。 对于 Windows,错误消息将写入 Windows 应用程序事件日志,并且该消息包含在向 Microsoft 报告错误中。 对于类似 Unix 的系统,消息与堆栈跟踪一起写入标准错误流。 | 
| FailFast(String, Exception) | 在报告错误消息之前立即终止进程。 对于 Windows,错误消息将写入 Windows 应用程序事件日志,并且消息和异常信息包含在向 Microsoft 报告的错误中。 对于类似 Unix 的系统,堆栈跟踪旁的消息将写入标准错误流。 | 
| GetCommandLineArgs() | 返回包含当前进程的命令行自变量的字符串数组。 | 
| GetEnvironmentVariable(String) | 从当前进程检索环境变量的值。 | 
| GetEnvironmentVariable(String, EnvironmentVariableTarget) | 从当前进程或者从当前用户或本地计算机的 Windows 操作系统注册表项检索环境变量的值。 | 
| GetEnvironmentVariables() | 从当前进程检索所有环境变量名及其值。 | 
| GetEnvironmentVariables(EnvironmentVariableTarget) | 从当前进程或者从当前用户或本地计算机的 Windows 操作系统注册表项检索所有环境变量名及其值。 | 
| GetFolderPath(Environment+SpecialFolder) | 获取指定系统特殊文件夹的路径。 | 
| GetFolderPath(Environment+SpecialFolder, Environment+SpecialFolderOption) | 使用用于访问特殊文件夹的指定选项获取指定系统特殊文件夹的路径。 | 
| GetLogicalDrives() | 返回包含当前计算机中的逻辑驱动器名称的字符串数组。 | 
| SetEnvironmentVariable(String, String) | 创建、修改或删除当前进程中存储的环境变量。 | 
| SetEnvironmentVariable(String, String, EnvironmentVariableTarget) | 创建、修改或删除当前进程中或者为当前用户或本地计算机保留的 Windows 操作系统注册表项中存储的环境变量。 |