SessionView
Une application console C# légère pour énumérer et afficher toutes les sessions utilisateur sur Windows Server, y compris les GUID de session.
Fonctionnalités
- Énumération complète des sessions : répertorie toutes les sessions actives sur le serveur Windows
- Informations détaillées sur la session : affiche l'ID de session, le nom de la station, l'état de la connexion, le nom d'utilisateur et le domaine
- Récupération du GUID de session : extrait l'identifiant GUID unique de chaque session depuis le registre Windows
- Détection de l'état de la connexion : indique si les sessions sont actives, déconnectées, inactives, etc.
- Sortie console propre : une sortie formatée et lisible pour une analyse rapide des sessions
Prérequis
- Windows Server (2012 R2 ou version ultérieure) ou Windows Client (Windows 10/11)
- .NET Framework 4.7.2+
- Privilèges d'administrateur (requis pour accéder aux informations de session et au registre)
Installation
Option 1 : Compilation à partir des sources
- Clonez ou téléchargez le dépôt
- Ouvrez la solution dans Visual Studio 2019 ou version ultérieure
- Compilez la solution (Ctrl+Shift+B)
- L'exécutable se trouvera dans
bin\Debug ou bin\Release
Option 2 : Compilation en ligne de commande
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
Utilisation
- Exécutez en tant qu'administrateur : cet outil nécessite un jeton élevé
- L'application énumérera automatiquement toutes les sessions et affichera les informations
Exemple de sortie
=== 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...
États de session
L'application peut afficher les états de connexion suivants :
- WTSActive : l'utilisateur utilise activement la session
- WTSConnected : la session est connectée
- WTSDisconnected : la session est déconnectée mais toujours en cours d'exécution
- WTSIdle : la session est inactive
- WTSListen : la session écoute les connexions
- WTSReset : la session est en cours de réinitialisation
- WTSDown : la session est arrêtée
- WTSInit : la session est en cours d'initialisation
Détails techniques
API utilisées
- API WTS (wtsapi32.dll) : pour énumérer les sessions et interroger les informations de session
- API du registre Windows (advapi32.dll) : pour récupérer les GUID de session depuis le registre
Emplacement du registre
Les GUID de session sont stockés à l'emplacement suivant :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Remote\Terminal Services\Session\{SessionId}\SessionGuid
Limitations connues
- La session 0 (session Services) n'a généralement pas de GUID
- Nécessite des privilèges d'administrateur pour accéder aux informations de session
- Certaines sessions peuvent ne pas avoir toutes les informations disponibles selon leur état
Dépannage
Erreur « Access Denied »
- Assurez-vous d'exécuter l'application en tant qu'administrateur
- Vérifiez que vous disposez des autorisations appropriées sur le serveur
GUID de session manquants
- C'est normal pour certaines sessions système (comme la session 0)
- Certaines sessions déconnectées peuvent ne pas conserver leur GUID dans le registre
Aucune session trouvée
- Vérifiez que vous exécutez sur un Windows Server avec les services Terminal Server activés
- Vérifiez que le rôle Services Bureau à distance est installé
Cas d'utilisation
- Administration système : surveiller les sessions utilisateur actives et déconnectées
- Gestion du Bureau à distance : suivre les connexions RDP et leur état
- Audit de sécurité : identifier les sessions utilisateur et leurs identifiants uniques
- Scripts de gestion de sessions : intégration avec des outils d'automatisation pour le nettoyage des sessions
- Dépannage : diagnostiquer les problèmes liés aux sessions sur les serveurs Terminal Server
Licence
Ce projet est fourni tel quel à des fins éducatives et administratives.
Contribution
N'hésitez pas à signaler des problèmes, à forker le dépôt et à créer des pull requests pour toute amélioration.