Форум » Для флейма » Как программно определить, что юзер вышел из сеанса RDP ? » Ответить

Как программно определить, что юзер вышел из сеанса RDP ?

Sergy: Собственно, вопрос в заголовке. Есть часть пользователей, которые работают через RDP. Выходят из сеанса не завершая его, рвется в дальних регионах связь по GPRS, мало ли чего, всякое бывает. Программа продолжает работать. Но в три часа ночи сервер уходит в плановую перезагрузку и разумеется, рубит все висящие задачи. Хотелось-бы корректно завершить работу программы. Например, если сеанс отключен более 30 минут - программа спокойно выходит, не дожидаясь перезагрузки сервера. Есть идеи ?

Ответов - 10

petr707: Sergy пишет: ...корректно завершить работу программы.. Не вполне ясно, что это требование означает. Видимо, что программа должна завершать сама свою работу. Один из вариантов - сеанс при работе периодически определяет время простоя работы (неактивности) юзера, например, время последнего нажатия любой клавишки(мышки) и если простой больше нормы , например больше 1 часа, то программа пишет в свой журнал о завершении по простою- неактивности юзера , ну и все.. Правда, будут завершаться и не потерянные сеансы, где юзер пьет чай по два часа, и может быть недоволен , что нужно заново стартовать(логиниться) после чая Если есть регламент работы по часам , например, после 20-00 все работы должны завершаться, то сеанс просто проверяет свое системное время и после 20-00 сам себя завершает.. Если же предполагается завершение другим программным процессом, то сеанс периодически должен проверять наличие этого внешнего требования - читать поле в служебной таблице и если требование есть- сеанс себя завершает. Внешний супервизорный процесс также может получать список текущих выполняемых задач , например по команде TASKLIST , находить свои подшефные процессы по фильтру и если подшефный процесс не хочет сам завершаться , завершать его принудительно командой , например KILL, что вряд ли корректно, но все же лучше, чем перегрузка сервера. Можно записать в журнал и потом анализировать. Можно на сервере выставить в Планировщике задание на время за час до перегрузки - в два часа ночи, и проверить и завершить все свои залипшие сеансы. ..юзер вышел из сеанса RDP.. Не понятно.. наверное, все-таки не вышел, а коннект прервался ? Если удаленная работа через сервер терминалов, то на сервере для ярлыков RemoteApp можно настроить времена - простоя сеанса, пропажи коннекта и т.д. и сервер терминалов будет сам завершать такие процессы по превышению этих установок.

Sergy: Да, имел в виду решить вопрос отключения юзера. В принципе, долгое отсутствие движения мышкой/нажатий на клавиши на "обычной" рабочей станции должно обрабатываться системой как "ушел погулять". Наверное буду думать в этом направлении, спасибо.

Andrey: Вопрос по RDP или так называемом тонком клиенте. Можно ли как то настроить RDP файл и зашить его в свой ехе-ник ? И как потом его запускать ? ShellExecute() подойдёт ? Надоели юзера, которые в нём что-то правят, а потом шумят, программа не запускается. Да и допустим запретить подключать свои диски для этого сеанса настроить можно.


Dima: Andrey пишет: Можно ли как то настроить RDP файл и зашить его в свой ехе-ник ? Можно , ведь это текстовый файл (скрипт) с расширением RDP. Andrey пишет: ShellExecute() подойдёт ? Возможно и надо чекать. Andrey пишет: Да и допустим запретить подключать свои диски для этого сеанса настроить можно. Можно все запретить и при входе запускать нужную прогу. А вообще надо поковырять настройки RDP сервера.

Dima: Andrey Немного ссылок https://habrahabr.ru/post/122200/ https://support.microsoft.com/ru-ru/help/885187/remote-desktop-protocol-settings-in-windows-server-2003-and-in-windows http://samag.ru/archive/article/1850 + гугл "Структура RDP файла"

Andrey: Dima пишет: Немного ссылок Спасибо БОЛЬШОЕ !

ZAlex: Andrey пишет Вопрос по RDP или так называемом тонком клиенте. Несколько лет назад мы использовали Remote Desktop Plus (www.donkz.nl/) в режиме командной строки. Там куча настроек, есть примеры на сайте. Это как-бы надстройка над mstsc. Затем перешли на Citrix и все забылось.

Andrey: Посмотрел Remote Desktop Plus. Не то. И грохает Windows Server 2012... Сделал небольшую функцию [pre2]FUNCTION RunRDP() LOCAL cFile := GetStartUpFolder() + "\Demo4.RDP" ShellExecute( 0, "Open", cFile,,, 3 ) RETURN NIL[/pre2] Первый раз приходиться настраивать вручную и вводить логин и пароль. На ХР вообще ничего не поднимается, молча всё сваливается и всё. Ковыряться и ковыряться в этом...

Dima: Andrey пишет: ShellExecute( 0, "Open", cFile,,, 3 ) А если попробовать WAPI_ShellExecute( , "open", cFile, , , 3 )

PSP: Andrey пишет: Первый раз приходиться настраивать вручную и вводить логин и пароль. *.rdp - обычный текстовый файл. Ты можешь имя туда вписать сам. Ну а пароль - да, руками. Или запомнить сразу.



полная версия страницы