SessionView
가벼운 C# 콘솔 응용 프로그램으로, Windows Server의 모든 사용자 세션과 세션 GUID를 열거하고 표시합니다.
기능
- 완전한 세션 열거: Windows 서버의 모든 활성 세션을 나열합니다.
- 상세한 세션 정보: 세션 ID, 스테이션 이름, 연결 상태, 사용자 이름 및 도메인을 표시합니다.
- 세션 GUID 검색: Windows 레지스트리에서 각 세션의 고유 GUID 식별자를 추출합니다.
- 연결 상태 감지: 세션이 활성, 연결 끊김, 유휴 상태 등을 표시합니다.
- 깔끔한 콘솔 출력: 빠른 세션 분석을 위해 읽기 쉬운 형식의 출력을 제공합니다.
요구 사항
- Windows Server (2012 R2 이상) 또는 Windows 클라이언트 (Windows 10/11)
- .NET Framework 4.7.2+
- 관리자 권한 (세션 정보 및 레지스트리 액세스에 필요)
설치
옵션 1: 소스에서 빌드
- 리포지토리를 클론하거나 다운로드합니다.
- Visual Studio 2019 이상에서 솔루션을 엽니다.
- 솔루션을 빌드합니다 (Ctrl+Shift+B).
- 실행 파일은
bin\Debug 또는 bin\Release에 위치합니다.
옵션 2: 명령줄 빌드
MSBuild 사용 (Visual Studio용 개발자 명령 프롬프트)
msbuild SessionView.csproj /p:Configuration=Release
또는 CSC 직접 사용
csc /out:SessionView.exe /platform:anycpu Program.cs
사용법
- 관리자로 실행: 이 도구는 상승된 토큰이 필요합니다.
- 애플리케이션이 자동으로 모든 세션을 열거하고 정보를 표시합니다.
예제 출력
=== Windows Server Session Enumerator ===
Found 3 session(s)
Session 1:
Session ID: 0
Station Name: Services
State: WTSDisconnected
Username: (No user logged in)
Session GUID: (Not available)
Session 2:
Session ID: 1
Station Name: Console
State: WTSActive
Username: Administrator
Domain: MYSERVER
Session GUID: {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
Session 3:
Session ID: 2
Station Name: RDP-Tcp#1
State: WTSDisconnected
Username: JohnDoe
Domain: COMPANY
Session GUID: {B2C3D4E5-F6A7-8901-BCDE-F12345678901}
Press any key to exit...
세션 상태
애플리케이션은 다음과 같은 연결 상태를 표시할 수 있습니다:
- WTSActive: 사용자가 세션을 활발히 사용 중
- WTSConnected: 세션이 연결됨
- WTSDisconnected: 세션이 연결 해제되었지만 여전히 실행 중
- WTSIdle: 세션이 유휴 상태
- WTSListen: 세션이 연결 대기 중
- WTSReset: 세션이 재설정 중
- WTSDown: 세션이 다운됨
- WTSInit: 세션이 초기화 중
기술 세부 사항
사용된 API
- WTS API (wtsapi32.dll): 세션 열거 및 세션 정보 조회용
- Windows 레지스트리 API (advapi32.dll): 레지스트리에서 세션 GUID 검색용
레지스트리 위치
세션 GUID는 다음 경로에 저장됩니다:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Remote\Terminal Services\Session\{SessionId}\SessionGuid
알려진 제한 사항
- 세션 0(서비스 세션)에는 일반적으로 GUID가 없습니다.
- 세션 정보에 액세스하려면 관리자 권한이 필요합니다.
- 일부 세션은 상태에 따라 모든 정보를 사용할 수 없을 수 있습니다.
문제 해결
"액세스 거부" 오류
- 애플리케이션을 관리자로 실행하고 있는지 확인하세요.
- 서버에 적절한 권한이 있는지 확인하세요.
세션 GUID 누락
- 특정 시스템 세션(예: 세션 0)에서는 정상입니다.
- 일부 연결이 끊긴 세션은 레지스트리에 GUID를 유지하지 않을 수 있습니다.
세션을 찾을 수 없음
- 터미널 서비스가 활성화된 Windows Server에서 실행 중인지 확인하세요.
- 원격 데스크톱 서비스 역할이 설치되어 있는지 확인하세요.
사용 사례
- 시스템 관리: 활성 및 연결이 끊긴 사용자 세션 모니터링
- 원격 데스크톱 관리: RDP 연결 및 상태 추적
- 보안 감사: 사용자 세션 및 고유 식별자 식별
- 세션 관리 스크립트: 자동화 도구와 통합하여 세션 정리
- 문제 해결: 터미널 서버의 세션 관련 문제 진단
라이선스
이 프로젝트는 교육 및 관리 목적으로 있는 그대로 제공됩니다.
기여
개선 사항이 있으면 이슈를 제출하고, 리포지토리를 포크하고, 풀 리퀘스트를 자유롭게 생성해 주세요.