Мониторинг подключений и отключений сеансов
Чтобы приложение-служба, например серверное приложение виртуального канала, отслеживала сеансовые подключения и отключения, необходимо зарегистрировать его в службах удаленных рабочих столов. Чтобы зарегистрировать приложение в службах удаленных рабочих столов, сохраните имя приложения сервера виртуальных каналов в реестре, добавив подраздел в следующее расположение:
HKEY_LOCAL_MACHINE\Системы\CurrentControlSet\Управления\TerminalServer\Надстройки
Подраздел может иметь любое имя. Он должен иметь REG_SZ значение Name, содержащее символьное имя приложения.
Name = AddinName
Максимальная длина подраздела и значения Name составляет 99 символов.
Подраздел также должен иметь значение REG_DWORD , указывающее тип серверного приложения.
Type = AddinType
AddinType должно иметь следующее значение.
Значение | Значение |
---|---|
3 | Приложение в пользовательском режиме, пространство сеанса. |
Регистрация приложения-службы вступает в силу только в сеансах, созданных после регистрации.
Для каждого зарегистрированного приложения службы службы удаленных рабочих столов будут сигнализировать набор объектов событий, когда клиент подключается или отключается от сеанса. Каждый подключаемый модуль виртуального канала должен зарегистрировать себя и создать события уведомлений, вызвав CreateEvent. Имена этих объектов событий соответствуют следующему формату.
AddinName-Reconnect
AddinName-Disconnect
AddinName — это строка, указанная в значении Name подраздела реестра, в котором зарегистрировано серверное приложение. Создание этих событий в сеансе приводит к их созданию в специальном каталоге событий для каждого сеанса. Каталог событий обеспечивает дополнительную безопасность, не позволяя приложениям в других сеансах изменять состояние этих событий.
Чтобы управлять получением на сервере событий RECONNECT и DISCONNECT, можно поместить флаг RemoteControlPersistent в реестре в следующем разделе:
HKEY_LOCAL_MACHINE\Системы\CurrentControlSet\Управления\TerminalServer\Надстройки\addinname
Флаг включает или отключает передачу сигналов о событиях RECONNECT и DISCONNECT при запуске или остановке сеанса клиента. Синтаксис значения REG_DWORD приведен ниже.
RemoteControlPersistent = flag
Значение флага может быть равно 1 или нулю. Ноль — это значение по умолчанию. Если задано значение one, приложение-служба не будет получать уведомления о запуске или остановке клиентского сеанса. Если задано нулевое значение, событие RECONNECT сигнализируется при запуске клиентского сеанса, а событие DISCONNECT — при остановке сеанса клиента.
Предыдущий формат имени объекта события по-прежнему поддерживается в Windows Server 2008 для обеспечения обратной совместимости. Рекомендуется использовать более новый формат Windows Server 2008, так как он является более безопасным.
Предыдущий формат события выглядит следующим образом.
Global\AddinName-SessionId-Reconnect
Global\AddinName-SessionId-Disconnect
AddinName — это строка, указанная в значении Name подраздела реестра, в котором зарегистрировано серверное приложение. SessionId — это идентификатор сеанса клиента.