You can use the System.Environment class to obtain information about the machine and environment, 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.