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

как программно подключиться к сессии пользователя для оказания помощи?
Страницы: 1

Использую ActiveX RDP для программного создания подключения к серверу терминалов из 1С8. Но там не получается подключиться в одну сессию с пользователем чтоб погонять его мышку, помочь, показать. Сеанс перехватывается админом, пользователя отключает. Как все таки программно реализовать именно удаленное управление сеансом?


UltraVNC - подключаешься и рулишь!


спасибо, VNC есть, искусством правого клика в диспетчере на терминальном сервере тоже владею и пр. Хотелось бы ответов по существу сабжа.


что никто никогда не сталкивался что ли?


ЗапуститьПриложение("shadow "+НомерСеанса);


ага, классно. тока это не программно, а командной строкой. Когда ActiveX RDP программно создает окно подключения то управляешь свойствами этого окна - размер, цветопередача, фулскрин и т.д. Но не контекстом терминального сервера. т.е. если я напишу просто ЗапуститьПриложение("shadow "+НомерСеанса); оно выполнится на локальной машине, а не в окне терминала.



Для функционирования вышеизложенной схемы необходимо выполнить следующие процедуры:
1. Установить на клиентских компьютерах пользователей модифицированный ICA клиент;
- Первичная установка ICA клиента v10+ или обновление ICA клиента v10 до версии v10+;
ВНИМАНЕ! Обновление с версий младше версии v10 невозможно (разные инсталяторы)!
2. Установить COM-server на Citrix-серверах (инсталлятор приложен, или руками зарегистрировать);


У меня нет ни Цитрикса ни желания обновлять несколько сотен клиентских машин разных виндов за сотни км друг от друга в слепую


кто нибудь может помочь с объектной моделью RDP ActiveX клиента MS? или WMI терминального сервера? API функции на худой конец? Я MSDN мелкомягкий облазил - не помогло. Видимо не мой уровень :(


(9) Дай ссылку на активикс.
Попробую.


(9+) Если не секрет, почему именно активикс.


нашел такой пример здесь же на ИС,
http://infostart.ru/projects/2426/
других способов программных не знаю. Поэтому так.

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

тоже не знаю как обойти. По ProgId "MsRDP.MsRDP" тоже не везде цепляется


(12) Так зачем все-таки именно активикс?


а как еще? командной строкой mstsc.exe /TermilaServer ? тогда логин пароль не передашь. Все помнить и руками вводить не подходит, каждому отдельный rdp файл настроек где то делать и держать тоже не вариант.


(14) Вообще ничего не понятно.
Опиши задачу подробней, по шагам.
Мне кажется, ты что-то не то задумал.

Кто должен подключаться? Откуда? Зачем?


пишу конфу для облегчения HelpDesk'a, помощи пользователям. Конфа хранит учетки, пароли, имена компов кучу разной информации. Баз данных разных много, пользователей в каждой из них тоже, большинство этих пользователей удаленные. Управление терминальными сессиями одна из маленьких подзадач. Надо во время телефонного звонка (обращения за помощью) быстренько выбрать пользователя из справочника и подключиться к его удаленному столу


UP


(16) К чужому терминальному сеансу можно подключиться, только если ты сам находишься в терминале.
Так что сначала ты сам должен подключиться к удаленному серверу.


ну с этим проблем нет - подключаюсь под админской учеткой через RDP ActiveX, а дальше как?


(19) Куда подключаешься?
К рабочему столу сервера? Какие проблемы тогда?


см (5) и (6). Кажется мы ходим по кругу


(21) Поехали сначала.
Зачем тебе активикс? Только для того, чтобы терминальное окно было на форме 1С?

Проще же наделать файлов *.RDP и привязать их к списку удаленных серверов.
Щелкаешь по выбранному серверу и запускается уже настроенный файл RDP.
И подключайся к кому хочешь.

+ 1 [ vbutaev; ]

есть одна из баз 1С8. В ней работает 100 человек. Все в терминале. Каждый в своей сесии. Логин\пароль каждого знаю. Как подключиться программно сразу к его сессии и поелозить его мышкой? Потому что есть еще 400 пользователей от других баз. Пока из 500 общего списка найдешь одного в диспетчере задач..... К тому же терминальных серверов 5. и ферма автоматического распределения нагрузки между ними. Поэтому я не знаю на каком терм.сервере мне искать этого юзверя. Ну с фермой пока заморачиваться не будем. На одном бы терм.сервер асилить подключение к сессии.


(23) А зачем его искать?
Код сеанса получаешь query user Pupkin
И подключаешься к нему.


Пример кода можешь дать? А то я пока тебя не понял


(25) Чего еще не хватает?

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

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

Все.


только выполнять твой код уже на сервере терминалов надо. А как со своего компа на терминальный сервер в нужную сессию попасть?


удалено

Изменено: ron - 22.07.09 1:08


(27) Никак. см (18)


Ты не прав, решение нашли. в объектной модели RDP ActiveX есть параметр запуска программы при старте

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


И полчается что при коннекте создается теневое управление сеансом


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

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

Так что ваше решение отличается от моего только тем, что не будет работать. :))


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

2. ID сеанса можно получить разными способами. например через консольную команду qwinsta. или через WMI, щас в MSDN роюсь, где то видел


(32) Сдаюсь. Разговор глухого со слепым.

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

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

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

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

И какая разница, как получить код сеанса? Его все равно надо получить ПЕРЕД запуском shadow.


Немного не по сабжу и наверняка баянище, но тоже про терминалы, в свое время долго искал.
Как из XP сделать терминальный сервер. Когда нужно 2-5 юзеров повесить на отдельный сервак в терминалку, но ставить 2003 не вариант. Можно пропачить XP, и относительно нормально работать не мешая друг другу (юзеров не выкидывать и админам админить). Это конечно все плохо и незаконно ("пачить"), но кого это останавливало. Если кому интересно, пишите, могу выслать патч :)


(34) Это совсем не по сабжу и про патч проще почитать в инете, чем получить от тебя.


да, чего то со взаимопониманием туговато у нас. Не видел в твоих предложениях законченной схемы.
1. Рабочая станция
2. коннект
3. терминальный сервер
4. управление пользовательской сессией.

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

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

Ну ладно. Все равно спасибо за долгие попытки помочь.
Я как доделаю положу пример


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

И это независимо от того, применяешь ли ты активикс (похоже глючный) или просто mstsc.
Рекомендую отказаться от активикса. Никаких преимуществ он добавляет.


я ж сказал что все уже заработало! с 1 по 4. программно. что не так?


(38) И с самого начала должно было работать. Схема самая обычная.
Что в твоем понятии программно? Часто употребляешь это слово, хочу понять.


это значит что нажал кнопку и получил результат :) автоматически, выполнением кода программы а не дополнительных клацаний мышкой, ввода каких то команд и пр.


А чем тогда не устраивает Remote Assistance который как раз для решения этой задачи и предназначен?
Имя терминального сервера на котором залогинен пользователь несложно вычислить скриптом. Дальше просто отправляете ему предложение поддержки и ему нужно нажать "разрешить". Логин/пароль пользователя не нужен (это кстати вообще небезопасно когда кто то кроме пользователей знает их пароли).
Пользователи могут и сами отправлять запросы на поддержку, тогда вам не придётся и имя сервера вычислять.
Заодно и на междугородних звонках секономите - в RA есть возможность чата, и вроде даже голосового общения :)


экономить тут не выйдет. возможность голосового общения предпологает еще и гарнитуру на той стороне, хороший канал и более адекватного пользователя. Вариант с поддержкой, отправить приглашение, нажать "разрешить" (для этого еще поддержка в правах должна быть включена), пользователь должен знать кому отправить приглашение, а если саппортов несколько, а если отправил конкуренту? ... в общем хороший вариант, но все таки подключение в один клик лучше.

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

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

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

Страницы: 1
Форма ответов
Логин:
Пароль:
Текст сообщения*
Прикрепить файл
Учет бонусов и бонусных карт в 1С. НОВАЯ ВЕРСИЯ 3.1
Открыть