The .NET Framework Overview: Accessing Environment Settings in C#

You can use the System.Environment class to obtain information about the machine and envi­ronment, as the following example demonstrates:

using System;

using System.Collections;

class Test {

public static void Main()

{

Console.WriteLine(“Command Line: {0}”,

Environment.CommandLine);

Console.WriteLine(“Current Directory: {0}”,

Environment.CurrentDirectory);

Console.WriteLine(“HasShutdownStarted: {0}”,

Environment.HasShutdownStarted);

Console.WriteLine(“Machine Name: {0}”,

Environment.MachineName);

Console.WriteLine(“OS Version: {0}”,

Environment.OSVersion);

Console.WriteLine(“ProcessorCount: {0}”,

Environment.ProcessorCount);

Console.WriteLine(“Stack Trace: {0}”,

Environment.StackTrace);

Console.WriteLine(“System Directory: {0}”,

Environment.SystemDirectory);

Console.WriteLine(“Tick Count: {0}”,

Environment.TickCount);

Console.WriteLine(“Version: {0}”, Environment.Version);

Console.WriteLine(“UserDomainName: {0}”,

Environment.UserDomainName);

Console.WriteLine(“UserInteractive: {0}”,

Environment.UserInteractive);

Console.WriteLine(“UserName: {0}”, Environment.UserName);

Console.WriteLine(“Working Set: {0}”,

Environment.WorkingSet);

Console.WriteLine(“Environment Variables”);

foreach (DictionaryEntry var in

Environment.GetEnvironmentVariables())

Console.WriteLine(” {0}={1}”, var.Key, var.Value);

Console.WriteLine(“Logical Drives”);

foreach (string drive in Environment.GetLogicalDrives())

Console.WriteLine(” {0}”, drive);

}

}

When this runs, it generates the following output (results will vary on different machines):

Command Line: “Z:\Nick\PIC#\Code\Accessing Environment

Settings\bin\Debug\Accessing Environment Settings.vshost.exe”

Current Directory: Z:\Nick\PIC#\Code\Accessing Environment

Settings\bin\Debug

HasShutdownStarted: False

Machine Name: WINXP-VMWARE

OS Version: Microsoft Windows NT 5.1.2600 Service Pack 2

ProcessorCount: 1

Stack Trace:             at System.Environment.GetStackTrace(Exception e,

Boolean needFileInfo)

at System.Environment.get_StackTrace()

at Test.Main() in z:\nick\pic#\code\accessing environment

settings\file_1.cs:line 16

at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)

at System.AppDomain.ExecuteAssembly(String assemblyFile,

Evidence assemblySecurity, String[] args)

at Microsoft.VisualStudio.HostingProcess.Utilities.HostProc. RunUsersAssembly()

at System.Threading.ThreadHelper.ThreadStart_Context(Object state)

at System.Threading.ExecutionContext.Run(ExecutionContext

executionContext, ContextCallback callBack, Object state,

StackCrawlMark& stackMark) at System.Threading.ThreadHelper.ThreadStart()

System Directory: C:\WINDOWS\system32

Tick Count: 10894000

Version: 2.0.41202.0

UserDomainName: WINXP-VMWARE

UserInteractive: True

UserName: User

Working Set: 11493376

Environment Variables

Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem

TEMP=C:\DOCUME~1\User\LOCALS~1\Temp

SESSIONNAME=Console

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH

USERDOMAIN=WINXP-VMWARE

PROCESSOR_ARCHITECTURE=x86

SystemDrive=C:

APPDATA=C:\Documents and Settings\User\Application Data

windir=C:\WINDOWS

TMP=C:\DOCUME~1\User\LOCALS~1\Temp

USERPROFILE=C:\Documents and Settings\User

ProgramFiles=C:\Program Files

FP_NO_HOST_CHECK=NO

HOMEPATH=\Documents and Settings\User

COMPUTERNAME=WINXP-VMWARE

USERNAME=User

NUMBER_OF_PROCESSORS=1

PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 8,

GenuineIntel

SystemRoot=C:\WINDOWS

ComSpec=C:\WINDOWS\system32\cmd.exe

LOGONSERVER=\\WINXP-VMWARE

VS80COMNTOOLS=C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\

WecVersionForRosebud.740=2

CommonProgramFiles=C:\Program Files\Common Files

PROCESSOR_LEVEL=15

PROCESSOR_REVISION=0208

CLIENTNAME=Console

ALLUSERSPROFILE=C:\Documents and Settings\All Users

OS=Windows_NT

HOMEDRIVE=C:

Logical Drives A:\

C:\

D:\

Z:\

Source: Gunnerson Eric, Wienholt Nick (2005), A Programmer’s Introduction to C# 2.0, Apress; 3rd edition.

Leave a Reply

Your email address will not be published. Required fields are marked *