Определить активный сеанс RDP - PullRequest
0 голосов
/ 08 ноября 2018

Мне нужно внедрить переключатель мертвеца в мое приложение. Если приложение запущено из RDP, мне нужно действовать, если оно теряет соединение с удаленным клиентом.

Я знаю, когда я работаю в RDP, используя

GetSystemMetrics(SystemMetric.SM_REMOTESESSION)

Но когда клиент закрывается без выхода из системы, сеанс продолжается. Это сценарий, на который я хочу отреагировать, но я не знаю, как обнаружить отключение клиента. Мне нужно знать, есть ли активный пользователь RDP или нет.

Я мог бы потенциально найти удаленную конечную точку, наблюдая за портом RDP, но, поскольку можно было бы настроить порт не по умолчанию, я бы хотел избежать этого решения, если существует лучшее.

Я бы предпочел решение, не относящееся к WinForms, WPF, UWP и т. Д. Бонусные баллы, если оно работает и с .NET Core.

1 Ответ

0 голосов
/ 08 ноября 2018

Не решение .NET Core, а решение Windows API. Существуют уведомления об изменении сеанса, в которые вы можете подписаться через WTSRegisterSessionNotification (и аналогично отменить регистрацию позже).

Эти уведомления затем доставляются в ваш цикл сообщений Windows, так что вам нужно его запустить. (WinForms и WPF делают, и есть определенные механизмы, позволяющие вам настраивать обработку сообщений )

Затем вы получите уведомление, когда сеанс будет заблокирован или отключен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...