SessionView
Una aplicación de consola ligera en C# para enumerar y mostrar todas las sesiones de usuario en Windows Server, incluidos los GUID de sesión.
Características
- Enumeración completa de sesiones: Lista todas las sesiones activas en el servidor Windows
- Información detallada de la sesión: Muestra ID de sesión, nombre de estación, estado de conexión, nombre de usuario y dominio
- Recuperación del GUID de sesión: Extrae el identificador GUID único de cada sesión desde el registro de Windows
- Detección del estado de conexión: Muestra si las sesiones están Activas, Desconectadas, Inactivas, etc.
- Salida de consola limpia: Salida formateada fácil de leer para un análisis rápido de sesiones
Requisitos
- Windows Server (2012 R2 o posterior) o Cliente Windows (Windows 10/11)
- .NET Framework 4.7.2+
- Privilegios de administrador (necesarios para acceder a la información de sesión y al registro)
Instalación
Opción 1: Compilar desde el código fuente
- Clona o descarga el repositorio
- Abre la solución en Visual Studio 2019 o posterior
- Compila la solución (Ctrl+Shift+B)
- El ejecutable se ubicará en
bin\Debug o bin\Release
Opción 2: Compilación por línea de comandos
Using MSBuild (Developer Command Prompt for Visual Studio)
msbuild SessionView.csproj /p:Configuration=Release
Or using CSC directly
csc /out:SessionView.exe /platform:anycpu Program.cs
Uso
- Ejecutar como administrador: Esta herramienta necesita un token elevado
- La aplicación enumerará automáticamente todas las sesiones y mostrará la información
Salida de ejemplo
=== 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...
Estados de sesión
La aplicación puede mostrar los siguientes estados de conexión:
- WTSActive: El usuario está usando activamente la sesión
- WTSConnected: La sesión está conectada
- WTSDisconnected: La sesión está desconectada pero sigue en ejecución
- WTSIdle: La sesión está inactiva
- WTSListen: La sesión está a la escucha de conexiones
- WTSReset: La sesión se está restableciendo
- WTSDown: La sesión está caída
- WTSInit: La sesión se está inicializando
Detalles técnicos
APIs utilizadas
- WTS API (wtsapi32.dll): Para enumerar sesiones y consultar información de sesión
- Windows Registry API (advapi32.dll): Para recuperar GUID de sesión desde el registro
Ubicación en el registro
Los GUID de sesión se almacenan en:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Remote\Terminal Services\Session\{SessionId}\SessionGuid
Limitaciones conocidas
- La sesión 0 (sesión de servicios) normalmente no tiene GUID
- Requiere privilegios de administrador para acceder a la información de sesión
- Algunas sesiones pueden no tener toda la información disponible dependiendo de su estado
Solución de problemas
Error "Acceso denegado"
- Asegúrate de estar ejecutando la aplicación como administrador
- Comprueba que tienes los permisos adecuados en el servidor
GUID de sesión faltantes
- Esto es normal en ciertas sesiones del sistema (como la sesión 0)
- Algunas sesiones desconectadas pueden no conservar su GUID en el registro
No se encontraron sesiones
- Verifica que estás ejecutando en un Windows Server con Servicios de Terminal Server habilitados
- Comprueba que el rol de Servicios de Escritorio Remoto está instalado
Casos de uso
- Administración del sistema: Monitorear sesiones de usuario activas y desconectadas
- Gestión de Escritorio Remoto: Rastrear conexiones RDP y sus estados
- Auditoría de seguridad: Identificar sesiones de usuario y sus identificadores únicos
- Scripts de gestión de sesiones: Integrar con herramientas de automatización para la limpieza de sesiones
- Solución de problemas: Diagnosticar problemas relacionados con sesiones en Terminal Servers
Licencia
Este proyecto se proporciona tal cual, con fines educativos y administrativos.
Contribuciones
No dudes en enviar incidencias, bifurcar el repositorio y crear solicitudes de extracción para cualquier mejora.