Основное назначение - поиск активной сессии пользователя по списку терминальных серверов и подключение к ней для помощи или других задач тех.поддержки и администрирования.
Обработку можно подключить как "Дополнительную обработку" в любую конфигурацию на управляемых формах через интерфейс БСП, добавить в состав конфигурации через конфигуратор или открывать через Файл -> Открыть, указав скачанный файл.
Тестирование производилось подключением в качестве дополнительной обработки в конфигурациях "1С: Бухгалтерия предприятия, редакция 3.0 (3.0.111.16)" и "Управление торговлей, редакция 11 (11.4.11.55)" на версии платформы 8.3.18.1289.
Так как обработка использует запуск системных утилит, при первом использовании будет выходить запрос о безопасном режиме работы. Для нормального функционирования он должен быть отключен. Если выходит ошибка в момент сканирования серверов или запуске удаленного подключения, решение описано в пункте "ВАЖНО" ниже по тексту.
Основные настройки и описание работы.
Список серверов задается на главной форме в текстовой строке через запятую.
Поиск сессий производится нажатием кнопки "Сканировать сервера". При этом происходит поочередный вызовом утилиты quser.exe с параметром /server по заданному списку. В настройках обработки можно задать режим запуска сканирования при открытии.
Запуск утилиты и получение текста ответа реализовано через COM объект WScript.Shell метод Exec. Разрешение на его использование требует отключение безопасного режима и как следствие выходит вопрос пользователю при первом запуске.
Дополнительно реализован запрос к контроллеру домена для получения дополнительных сведений о пользователях, так как утилита quser возвращает только имена пользователей и номера сессий. Для удаленного подключения этих данных достаточно, но для работы специалиста поддержки часто требуется больше данных, таких как ФИО, телефон, e-mail, подразделение.
Запрос к контроллеру домена реализован через ADODB.Connection с провайдером ADsDSOObject. Т.е. по указанному в настройках домену получаются все его пользователи и те чье имя совпадет при сканировании сервера дополняются данными полей из AD.
В полученном списке отображается статусы сессий и ID. Отключить получение неактивных сессий можно в настройках обработки.
По кнопке "Удаленный доступ" (или двойному клику) производится запуск теневого подключения к выбранной сессии из списка.
Режим доступа задается кнопками-переключателями "Только наблюдение" и "Без согласия пользователя" (последняя требует особых прав в подключаемой системе)
Настройки открываются по кнопке "Настройки". Сохранение всех настроек происходит в момент закрытия главной формы обработки механизмом Автоматического сохранение данных формы. Для каждого пользователя настройки индивидуальны.
ВАЖНО!: Утилита quser.exe запускается на клиенте, но доступ клиентского приложения к системным утилитам может быть запрещен. Для решения этой проблемы достаточно скопировать утилиту в общедоступный каталог (локальный или сетевой) и указать путь к нему в настройках обработки. Утилита обычно находится в каталоге "C:\Windows\System32".
Удаленный доступ реализуется вызовом типовой утилиты mstsc с параметрами /shadow:ID /v:SERVER и дополнительно /control и /noConsentPrompt если их вызов включен кнопками-переключателями на главной форме обработки.
ВАЖНО!: У пользователя - администратора домена, а так же у администраторов терминальных серверов не возникнет проблем с доступом в этих режимах. Но если потребуется настроить доступ в таком режиме для особой группы непривилегированных пользователей, например операторов поддержки 1С или руководителя подразделения, то по этой теме нужно искать статьи на тему RDS Shadow. Делается это скриптом PowerShell, так как GUI интерфейс AD и сервера терминалов пока не имеет этой настройки. Например в этой статье https://winitpro.ru/index.php/2014/02/12/rds-shadow-v-windows-2012-r2/ с момента RDS Shadow из PowerShell есть конкретика с примерами ссылка https://winitpro.ru/index.php/2016/03/02/zapusk-osnastok-tsadmin-msc-i-tsconfig-msc-v-windows-server-2012-r2/, я использовал для настройки именно их. Здесь нужно обратить внимание что в примере права настраиваются для TerminalName='RDP-Tcp', но не забывайте что есть еще TerminalName='Console'. Если у вас есть машины не в режиме RDP, то настроив на них права (например через logon-скрипт) для обоих этих групп вы сможете получать доступ как к RDP сессии, так и к консоли неотличимо по функционалу и виду.