Environment 클래스
- 유용한 여러 속성을 제공
- 파일과 폴더
* CurrentDirectory: 프로그램이 실행중인 디렉토리 주소의 풀 패스
* SystemDirectory: 시스템 디렉토리
* CommandLine: 프로그램 이름을 포함한 해당 프로세스의 명령줄
- 컴퓨터와 운영체제
* MachineName: 컴퓨터의 NetBIOS명
* ProcessorCount: CPU의 Core 수
* OSVersion: 현재 사용중인 시스템의 System.OperatingSystem 객체를 반환
* NewLine: 현재 사용중인 시스템의 개행 문자
- 사용자 로그인
* UserName: 윈도우즈 시스템에서 로그인한 사용자의 계정명
* UserInteractive: 프로세스가 유저에게 보여지는지(UI가 표시되어서) 여부
* UserDomainName: 네트워크 도메인명
- 진단
* TickCount
: 시스템이 시작하고나서부터 지난 시간(ms 단위)
: 처음 체크했을 때 엄청 큰 숫자가 떠있었는데, 재부팅 했더니 정상적으로 표시된다.
* StackTrace: 메소드 콜 리스트를 역순으로 표시
* WorkingSet: 프로세스 컨텍스트에 매핑된 물리적 메모리를 표시(byte)
* Version: 현재 사용중인 CLR의 정보가 담긴 System.Version 객체를 반환
- 그 밖에
* GetFolderPath
: 특정 시스템 폴더의 경로(Environment.SpecialFolder)를 표시
: 2번째 인수로 Environment.SpecialFolderOption 옵션 지정이 가능한데 DoNotVerify가 정확히 어떤 방식인지...
* GetEnvironmentVariable: 해당 환경변수의 값을 출력
* GetEnvironmentVariables: 모든 환경변수의 Key와 Value를 IDictionary 형식으로 반환
* SetEnvironmentVariable
: 환경 변수를 설정(프로세스가 동작하는 동안, 프로세스에서만 적용)
: 2번째 인수를 값이 아닌 null로 주면 해당 환경 변수를 삭제함
* ExitCode
: 프로그램을 명령줄이나 배치 파일로 실행했을 때, OS에 반환할 종료 코드를 설정 할 수 있음
: 윈도우즈에서의 에러 코드 일람 - https://msdn.microsoft.com/library/ms681381(v=vs.85)
using System;
using System.Collections;
namespace Practice
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine($"CurrentDirectory: {Environment.CurrentDirectory}");
Console.WriteLine($"SystemDirectory: {Environment.SystemDirectory}");
Console.WriteLine($"CommandLine: {Environment.CommandLine}");
Console.WriteLine();
Console.WriteLine($"MachineName: {Environment.MachineName}");
Console.WriteLine($"ProcessorCount: {Environment.ProcessorCount}");
Console.WriteLine($"OSVersion: {Environment.OSVersion}");
Console.WriteLine($"NewLine: {Environment.NewLine}");
Console.WriteLine();
Console.WriteLine($"UserName: {Environment.UserName}");
Console.WriteLine($"UserInteractive: {Environment.UserInteractive}");
Console.WriteLine($"UserDomainName: {Environment.UserDomainName}");
Console.WriteLine();
Console.WriteLine($"TickCount: {Environment.TickCount}");
Console.WriteLine($"- TimeElapsed: {TimeSpan.FromMilliseconds(Environment.TickCount)}");
Console.WriteLine($"StackTrace: \n{Environment.StackTrace}");
Console.WriteLine($"WorkingSet: {Environment.WorkingSet}");
Console.WriteLine($"Version: {Environment.Version}");
Console.WriteLine();
Console.WriteLine(" [ GetFolderPath ]");
Console.WriteLine($"ProgramFilesX86: {Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86, Environment.SpecialFolderOption.DoNotVerify)}");
Console.WriteLine($"ProgramFiles: {Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)}");
Console.WriteLine($"Windows: {Environment.GetFolderPath(Environment.SpecialFolder.Windows)}");
Console.WriteLine();
// GetEnvironmentVariable
Console.WriteLine(" [ GetEnvironmentVariable ]");
Console.WriteLine($"PATHEXT: {Environment.GetEnvironmentVariable("PATHEXT")}");
Console.WriteLine();
// GetEnvironmentVariables, 너무 길어서 5라인만 표시
Console.WriteLine(" [ GetEnvironmentVariables ]");
IDictionary set = Environment.GetEnvironmentVariables();
IDictionaryEnumerator sete = set.GetEnumerator();
int lines = 5;
int count = 0;
for (count = 0; count < lines; count++)
{
if(sete.MoveNext())
{
Console.WriteLine($"{sete.Key} = {sete.Value}");
}
else
{
break;
}
}
if(!(count == set.Count))
{
Console.WriteLine($"<-- {set.Count - count} line(s) remain. -->");
}
Console.WriteLine();
// 환경 변수 설정하기
Environment.SetEnvironmentVariable("HEROES_OF_THE_STORM", "true");
Console.WriteLine($"HEROES_OF_THE_STORM: {Environment.GetEnvironmentVariable("HEROES_OF_THE_STORM")}");
Console.WriteLine();
// 환경 변수 삭제하기
Environment.SetEnvironmentVariable("HEROES_OF_THE_STORM", null);
// ExitCode
Environment.ExitCode = 0;
Console.WriteLine("< Press any key to Quit >");
Console.ReadKey(true);
}
}
}
'C#' 카테고리의 다른 글
[C#] IList<T>, IList (0) | 2023.09.08 |
---|---|
[C#] ICollection<T>, ICollection (1) | 2023.08.31 |
[C#] AppContext (1) | 2023.08.30 |
[C#] Process (1) | 2023.08.29 |
[C#] Console (1) | 2023.08.27 |
[C#] 순서 비교 (IComparable<T>, IComparable) (1) | 2023.08.26 |
[C#] 상등 비교 (IEquatable<T>) (0) | 2023.08.25 |
[C#] Guid (0) | 2023.08.24 |