SessionView
Легковесное консольное приложение на C# для перечисления и отображения всех пользовательских сеансов на Windows Server, включая GUID сеансов.
Возможности
- Полное перечисление сеансов: Выводит список всех активных сеансов на сервере Windows
- Подробная информация о сеансе: Отображает идентификатор сеанса, имя станции, состояние подключения, имя пользователя и домен
- Получение GUID сеанса: Извлекает уникальный идентификатор GUID для каждого сеанса из реестра Windows
- Определение состояния подключения: Показывает, активны ли сеансы, отключены, простаивают и т.д.
- Чистый вывод в консоль: Удобочитаемое форматирование для быстрого анализа сеансов
Требования
- 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 Registry 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-подключений и их состояний
- Аудит безопасности: Идентификация пользовательских сеансов и их уникальных идентификаторов
- Скрипты управления сеансами: Интеграция с инструментами автоматизации для очистки сеансов
- Устранение неполадок: Диагностика проблем, связанных с сеансами, на терминальных серверах
Лицензия
Этот проект предоставляется как есть для образовательных и административных целей.
Вклад
Не стесняйтесь отправлять issue, форкать репозиторий и создавать pull request для любых улучшений.