управление терминальными сессиями

. AdApter (adapter) 15.06.09 16:23 Сейчас в теме
Добавить вознаграждение
Ответы
. AdApter (adapter) 11.06.09 09:12 Сейчас в теме
Использую ActiveX RDP для программного создания подключения к серверу терминалов из 1С8. Но там не получается подключиться в одну сессию с пользователем чтоб погонять его мышку, помочь, показать. Сеанс перехватывается админом, пользователя отключает. Как все таки программно реализовать именно удаленное управление сеансом?
. Jurii (jmw) 11.06.09 09:15 Сейчас в теме
UltraVNC - подключаешься и рулишь!
. AdApter (adapter) 11.06.09 09:36 Сейчас в теме
спасибо, VNC есть, искусством правого клика в диспетчере на терминальном сервере тоже владею и пр. Хотелось бы ответов по существу сабжа.
. AdApter (adapter) 11.06.09 12:12 Сейчас в теме
что никто никогда не сталкивался что ли?
. vip (vip) 11.06.09 13:12 Сейчас в теме
ЗапуститьПриложение("shadow "+НомерСеанса);
. AdApter (adapter) 11.06.09 13:29 Сейчас в теме
ага, классно. тока это не программно, а командной строкой. Когда ActiveX RDP программно создает окно подключения то управляешь свойствами этого окна - размер, цветопередача, фулскрин и т.д. Но не контекстом терминального сервера. т.е. если я напишу просто ЗапуститьПриложение("shadow "+НомерСеанса); оно выполнится на локальной машине, а не в окне терминала.
. Василий Демидов (Душелов) 3764 11.06.09 13:43 Сейчас в теме
. AdApter (adapter) 11.06.09 14:02 Сейчас в теме
Для функционирования вышеизложенной схемы необходимо выполнить следующие процедуры:
1. Установить на клиентских компьютерах пользователей модифицированный ICA клиент;
- Первичная установка ICA клиента v10+ или обновление ICA клиента v10 до версии v10+;
ВНИМАНЕ! Обновление с версий младше версии v10 невозможно (разные инсталяторы)!
2. Установить COM-server на Citrix-серверах (инсталлятор приложен, или руками зарегистрировать);


У меня нет ни Цитрикса ни желания обновлять несколько сотен клиентских машин разных виндов за сотни км друг от друга в слепую
. AdApter (adapter) 11.06.09 14:05 Сейчас в теме
кто нибудь может помочь с объектной моделью RDP ActiveX клиента MS? или WMI терминального сервера? API функции на худой конец? Я MSDN мелкомягкий облазил - не помогло. Видимо не мой уровень :(
. vip (vip) 11.06.09 14:09 Сейчас в теме
(9) Дай ссылку на активикс.
Попробую.
. vip (vip) 11.06.09 14:10 Сейчас в теме
(9+) Если не секрет, почему именно активикс.
. AdApter (adapter) 11.06.09 14:50 Сейчас в теме
нашел такой пример здесь же на ИС,
http://infostart.ru/projects/2426/
других способов программных не знаю. Поэтому так.

там кстати с регистрацией проблема. Если белый экран выскакивает значит на форму надо руками заново повесить такой же клиент только из своей винды.
Конфигуратор\форма\ вставить ActiveX. Имя "Microsoft RDP Client Control"

тоже не знаю как обойти. По ProgId "MsRDP.MsRDP" тоже не везде цепляется
. vip (vip) 11.06.09 15:14 Сейчас в теме
(12) Так зачем все-таки именно активикс?
. AdApter (adapter) 11.06.09 15:42 Сейчас в теме
а как еще? командной строкой mstsc.exe /TermilaServer ? тогда логин пароль не передашь. Все помнить и руками вводить не подходит, каждому отдельный rdp файл настроек где то делать и держать тоже не вариант.
. vip (vip) 11.06.09 15:46 Сейчас в теме
(14) Вообще ничего не понятно.
Опиши задачу подробней, по шагам.
Мне кажется, ты что-то не то задумал.

Кто должен подключаться? Откуда? Зачем?
. AdApter (adapter) 11.06.09 15:58 Сейчас в теме
пишу конфу для облегчения HelpDesk'a, помощи пользователям. Конфа хранит учетки, пароли, имена компов кучу разной информации. Баз данных разных много, пользователей в каждой из них тоже, большинство этих пользователей удаленные. Управление терминальными сессиями одна из маленьких подзадач. Надо во время телефонного звонка (обращения за помощью) быстренько выбрать пользователя из справочника и подключиться к его удаленному столу
. vip (vip) 15.06.09 16:33 Сейчас в теме
(16) К чужому терминальному сеансу можно подключиться, только если ты сам находишься в терминале.
Так что сначала ты сам должен подключиться к удаленному серверу.
. AdApter (adapter) 15.06.09 16:53 Сейчас в теме
ну с этим проблем нет - подключаюсь под админской учеткой через RDP ActiveX, а дальше как?
. vip (vip) 15.06.09 17:03 Сейчас в теме
(19) Куда подключаешься?
К рабочему столу сервера? Какие проблемы тогда?
. AdApter (adapter) 15.06.09 17:14 Сейчас в теме
см (5) и (6). Кажется мы ходим по кругу
. vip (vip) 15.06.09 17:22 Сейчас в теме
(21) Поехали сначала.
Зачем тебе активикс? Только для того, чтобы терминальное окно было на форме 1С?

Проще же наделать файлов *.RDP и привязать их к списку удаленных серверов.
Щелкаешь по выбранному серверу и запускается уже настроенный файл RDP.
И подключайся к кому хочешь.
. AdApter (adapter) 15.06.09 17:34 Сейчас в теме
есть одна из баз 1С8. В ней работает 100 человек. Все в терминале. Каждый в своей сесии. Логин\пароль каждого знаю. Как подключиться программно сразу к его сессии и поелозить его мышкой? Потому что есть еще 400 пользователей от других баз. Пока из 500 общего списка найдешь одного в диспетчере задач..... К тому же терминальных серверов 5. и ферма автоматического распределения нагрузки между ними. Поэтому я не знаю на каком терм.сервере мне искать этого юзверя. Ну с фермой пока заморачиваться не будем. На одном бы терм.сервер асилить подключение к сессии.
. vip (vip) 15.06.09 17:41 Сейчас в теме
(23) А зачем его искать?
Код сеанса получаешь query user Pupkin
И подключаешься к нему.
. AdApter (adapter) 15.06.09 23:15 Сейчас в теме
Пример кода можешь дать? А то я пока тебя не понял
. vip (vip) 15.06.09 23:23 Сейчас в теме
(25) Чего еще не хватает?

Звонит тебе юзер Pupkin с просьбой помочь.

1. ЗапуститьПриложение("query user Pupkin > c:\temp.txt");
2. Из c:\temp.txt узнаешь код сеанса пользователя Pupkin
3. ЗапуститьПриложение("shadow "+КодСеанса)

Все.
. AdApter (adapter) 15.06.09 23:41 Сейчас в теме
только выполнять твой код уже на сервере терминалов надо. А как со своего компа на терминальный сервер в нужную сессию попасть?
. ron (ron1) 16.06.09 00:48 Сейчас в теме
. vip (vip) 16.06.09 07:16 Сейчас в теме
. AdApter (adapter) 16.06.09 11:12 Сейчас в теме
Ты не прав, решение нашли. в объектной модели RDP ActiveX есть параметр запуска программы при старте

RDP.SecuredSettings.StartProgram="cmd.exe /C ""shadow 11""";


И полчается что при коннекте создается теневое управление сеансом
. vip (vip) 16.06.09 11:41 Сейчас в теме
(30) Почему неправ?
Какая разница? То, что ты написал, это "alternate shell:" в файле RDP.

1. Используя активикс, перед запуском shadow ты все равно сначала попадаешь в свой терминальный сеанс.
2. Как ты вычислишь код чужого сеанса без захода в свой терминальный сеанс?

Так что ваше решение отличается от моего только тем, что не будет работать. :))
. AdApter (adapter) 16.06.09 12:08 Сейчас в теме
1. ну и что? это и требовалось - и в терминал зайти под своей учеткой, и в теневое управление попасть под другой.

2. ID сеанса можно получить разными способами. например через консольную команду qwinsta. или через WMI, щас в MSDN роюсь, где то видел
. vip (vip) 16.06.09 12:22 Сейчас в теме
(32) Сдаюсь. Разговор глухого со слепым.

Твой вопрос: только выполнять твой код уже на сервере терминалов надо.
т.е. до команды shadow по условиям задачи на сервер терминалов зайти нельзя.

Твой ответ: ну и что? это и требовалось - и в терминал зайти под своей учеткой
т.е. до команды shadow по условиям задачи на сервер терминалов зайти можно.

Твой вопрос: А как со своего компа на терминальный сервер в нужную сессию попасть?
т.е. НЕ ЗАХОДЯ В СВОЙ сеанс, попасть сразу в чужой.

Твой ответ: ну и что? это и требовалось - и в терминал зайти под своей учеткой, и в теневое управление попасть под другой.

И какая разница, как получить код сеанса? Его все равно надо получить ПЕРЕД запуском shadow.
. Илья (sound) 16.06.09 12:30 Сейчас в теме
Немного не по сабжу и наверняка баянище, но тоже про терминалы, в свое время долго искал.
Как из XP сделать терминальный сервер. Когда нужно 2-5 юзеров повесить на отдельный сервак в терминалку, но ставить 2003 не вариант. Можно пропачить XP, и относительно нормально работать не мешая друг другу (юзеров не выкидывать и админам админить). Это конечно все плохо и незаконно ("пачить"), но кого это останавливало. Если кому интересно, пишите, могу выслать патч :)
. vip (vip) 16.06.09 12:34 Сейчас в теме
(34) Это совсем не по сабжу и про патч проще почитать в инете, чем получить от тебя.
. AdApter (adapter) 16.06.09 13:15 Сейчас в теме
да, чего то со взаимопониманием туговато у нас. Не видел в твоих предложениях законченной схемы.
1. Рабочая станция
2. коннект
3. терминальный сервер
4. управление пользовательской сессией.

Видел варианты через ручное создание rdp файлов настроек. это 1-3 и тупик.

Или 3,4 без 1,2. А чтобы от начала до конца и программно не видел.

Ну ладно. Все равно спасибо за долгие попытки помочь.
Я как доделаю положу пример
. vip (vip) 16.06.09 13:25 Сейчас в теме
(36) А я и не собирался давать рабочий код.
Я пытался донести до тебя, что невозможно "А как со своего компа на терминальный сервер в нужную сессию попасть?"

И это независимо от того, применяешь ли ты активикс (похоже глючный) или просто mstsc.
Рекомендую отказаться от активикса. Никаких преимуществ он добавляет.
. AdApter (adapter) 16.06.09 13:33 Сейчас в теме
я ж сказал что все уже заработало! с 1 по 4. программно. что не так?
. vip (vip) 16.06.09 13:46 Сейчас в теме
(38) И с самого начала должно было работать. Схема самая обычная.
Что в твоем понятии программно? Часто употребляешь это слово, хочу понять.
. AdApter (adapter) 16.06.09 13:50 Сейчас в теме
это значит что нажал кнопку и получил результат :) автоматически, выполнением кода программы а не дополнительных клацаний мышкой, ввода каких то команд и пр.
41. Yura ltc (lurik) 09.11.11 12:34 Сейчас в теме
А чем тогда не устраивает Remote Assistance который как раз для решения этой задачи и предназначен?
Имя терминального сервера на котором залогинен пользователь несложно вычислить скриптом. Дальше просто отправляете ему предложение поддержки и ему нужно нажать "разрешить". Логин/пароль пользователя не нужен (это кстати вообще небезопасно когда кто то кроме пользователей знает их пароли).
Пользователи могут и сами отправлять запросы на поддержку, тогда вам не придётся и имя сервера вычислять.
Заодно и на междугородних звонках секономите - в RA есть возможность чата, и вроде даже голосового общения :)
42. Adapter Бахтыреев (adapter) 405 15.11.11 10:59 Сейчас в теме
экономить тут не выйдет. возможность голосового общения предпологает еще и гарнитуру на той стороне, хороший канал и более адекватного пользователя. Вариант с поддержкой, отправить приглашение, нажать "разрешить" (для этого еще поддержка в правах должна быть включена), пользователь должен знать кому отправить приглашение, а если саппортов несколько, а если отправил конкуренту? ... в общем хороший вариант, но все таки подключение в один клик лучше.

Всем спасибо за советы, но тема уже не актуальная. В один клик реализовано в проекте HelpDesk. http://infostart.ru/public/73535/

Из базы пользователей быстрым поиском в панели удаленного управления выбирается пользователь, по нему уже программа сама ищет нужный терминальный сервер, ищет нужный логин пароль подключения (админский пароль, пользовательский знать не надо). Кнопка connect и ты управляешь его мышкой. Все происходит мгновенно, пока с пользователем общаешься по телефону. От момента когда он назвал свое фио до его рабочего стола проходит около 3-х секунд.

Пользователей больше тысячи, терминальных серверов десятки, поддерживаемых баз данных более 30. Саппортов второй линии техподдержки двое. Кстати подключения не ко всем терминальные. HelpDesk выбирает из базы данных к кому как можно подключаться и предлагает выбор если к этой точке доступно несколько способов подключения: по IP или имени компьютера, с персональной или общей авторизацией (для разных подразделений свои наборы), RDP, VNC, DeamWare, TeamViewer или еще что. Без HelpDesk теперь просто никак. Тратить по полчаса на каждое подключение - вот что дорого, экономить свое время надо.