2 out of 2 rated this helpful Rate this topic

Environment Class

Provides information about, and means to manipulate, the current environment and platform. This class cannot be inherited.

System.Object
  System.Environment

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
[ComVisibleAttribute(true)]
public static class Environment

The Environment type exposes the following members.

  Name Description
Public property Static member CommandLine Gets the command line for this process.
Public property Static member CurrentDirectory Gets or sets the fully qualified path of the current working directory.
Public property Static member ExitCode Gets or sets the exit code of the process.
Public property Static member Supported by Portable Class Library HasShutdownStarted Gets a value indicating whether the common language runtime (CLR) is shutting down.
Public property Static member Is64BitOperatingSystem Determines whether the current operating system is a 64-bit operating system.
Public property Static member Is64BitProcess Determines whether the current process is a 64-bit process.
Public property Static member MachineName Gets the NetBIOS name of this local computer.
Public property Static member Supported by the XNA Framework Supported by Portable Class Library NewLine Gets the newline string defined for this environment.
Public property Static member Supported by the XNA Framework OSVersion Gets an OperatingSystem object that contains the current platform identifier and version number.
Public property Static member Supported by the XNA Framework ProcessorCount Gets the number of processors on the current machine.
Public property Static member StackTrace Gets current stack trace information.
Public property Static member SystemDirectory Gets the fully qualified path of the system directory.
Public property Static member SystemPageSize Gets the amount of memory for an operating system's page file.
Public property Static member Supported by the XNA Framework Supported by Portable Class Library TickCount Gets the number of milliseconds elapsed since the system started.
Public property Static member UserDomainName Gets the network domain name associated with the current user.
Public property Static member UserInteractive Gets a value indicating whether the current process is running in user interactive mode.
Public property Static member UserName Gets the user name of the person who is currently logged on to the Windows operating system.
Public property Static member Supported by the XNA Framework Supported by Portable Class Library Version Gets a Version object that describes the major, minor, build, and revision numbers of the common language runtime.
Public property Static member WorkingSet Gets the amount of physical memory mapped to the process context.
Top
  Name Description
Public method Static member Exit Terminates this process and gives the underlying operating system the specified exit code.
Public method Static member ExpandEnvironmentVariables Replaces the name of each environment variable embedded in the specified string with the string equivalent of the value of the variable, then returns the resulting string.
Public method Static member FailFast(String) Immediately terminates a process after writing a message to the Windows Application event log, and then includes the message in error reporting to Microsoft.
Public method Static member FailFast(String, Exception) Immediately terminates a process after writing a message to the Windows Application event log, and then includes the message and exception information in error reporting to Microsoft.
Public method Static member GetCommandLineArgs Returns a string array containing the command-line arguments for the current process.
Public method Static member GetEnvironmentVariable(String) Retrieves the value of an environment variable from the current process.
Public method Static member GetEnvironmentVariable(String, EnvironmentVariableTarget) Retrieves the value of an environment variable from the current process or from the Windows operating system registry key for the current user or local machine.
Public method Static member GetEnvironmentVariables Retrieves all environment variable names and their values from the current process.
Public method Static member GetEnvironmentVariables(EnvironmentVariableTarget) Retrieves all environment variable names and their values from the current process, or from the Windows operating system registry key for the current user or local machine.
Public method Static member Supported by the XNA Framework GetFolderPath(Environment.SpecialFolder) Gets the path to the system special folder that is identified by the specified enumeration.
Public method Static member GetFolderPath(Environment.SpecialFolder, Environment.SpecialFolderOption) Gets the path to the system special folder that is identified by the specified enumeration, and uses a specified option for accessing special folders.
Public method Static member GetLogicalDrives Returns an array of string containing the names of the logical drives on the current computer.
Public method Static member SetEnvironmentVariable(String, String) Creates, modifies, or deletes an environment variable stored in the current process.
Public method Static member SetEnvironmentVariable(String, String, EnvironmentVariableTarget) Creates, modifies, or deletes an environment variable stored in the current process or in the Windows operating system registry key reserved for the current user or local machine.
Top

Use the Environment class to retrieve information such as command-line arguments, the exit code, environment variable settings, contents of the call stack, time since last system boot, and the version of the common language runtime.

The following example demonstrates displays a list of information about the current environment.


// 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:\

*/


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(2000 characters remaining)
Community Content Add
Annotations FAQ