Назад | Перейти на главную страницу

Как запустить приложение с графическим интерфейсом для Windows из telnet

У меня есть приложение с графическим интерфейсом, работающее на клиентском компьютере с Windows XP. Я хотел бы войти в telnet, выключить его, загрузить несколько файлов через ftp и затем запустить его снова.

Это последняя часть, с которой у меня возникают проблемы, поскольку кажется, что запуск любого приложения с графическим интерфейсом пользователя из telnet "запускает" его только в том смысле, что он добавляется в список процессов. Он не выводит всплывающие формы и не начинает ничего делать (например, писать файлы журнала).

Попробуй сам. Telnet localhost => notepad.exe

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

Кстати я начал это обсуждение на stackoverflow, и мне было рекомендовано, чтобы вы, ребята, кое-что знали об этом.

Похоже, это невозможно с telnet-службой Windows. Я даже тестировал запуск службы под локальная система учетная запись с включенным «взаимодействием с рабочим столом», но это не сработало (что нормально, поскольку это может иметь серьезные последствия для безопасности).

В качестве альтернативы использованию telnet я бы рекомендовал PsExec. PsExec является частью инструментов SysInternal, которые теперь находятся под управлением Microsoft. Использовать возможность включить взаимодействие с рабочим столом.

psexec \\machine -u user -p password -i -w "C:\application" myapp.exe

Вы можете скачать PsExec Вот.

Видеть http://msdn.microsoft.com/en-us/library/ms687096(VS.85).aspx для длинного и подробного, хотя в конечном итоге бесполезного описания того, что происходит, когда вы запускаете приложения из сеанса telnet. Много лет назад я написал telnet-сервер для Windows NT3.50 и усвоил все это на собственном горьком опыте :-)

Я думаю, тебе нужно еще раз взглянуть на то, что ты пытаешься сделать. Из вашего описания я предполагаю, что у вас есть приложение с графическим интерфейсом, которое запускает зарегистрированный пользователь, и вы хотите убить его, чтобы вы могли выполнить некоторое обслуживание, а затем перезапустить его. Убить его легко, так как вы можете просто убить процесс. Сложнее перезапустить его любым полезным способом. Не могли бы вы настроить компьютер на автоматический вход и запускать приложение из меню «Пуск»? Затем вы можете просто перезагрузить компьютер, когда вы загрузите файлы. Мне несколько стыдно признать, что я поступил именно так при аналогичных обстоятельствах.

JR

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

Вам нужно использовать Telnet? Удаленный рабочий стол позволит вам останавливать и запускать программу в интерактивном режиме, и вы все равно можете использовать FTP для перемещения файлов. Обратная сторона: удаленный компьютер будет заблокирован после отключения, и если вы выйдете из системы, программа перестанет работать.

как упоминалось выше, PsExec (sysinternals) предоставляет решение, это флаг -i, который позволяет создавать графический интерфейс на целевом компьютере.

с флагом -d ваш вызов не зависает (выполнение в фоновом режиме), поскольку в противном случае он ожидал бы завершения приложения

теперь для безопасного удаленного выполнения вы можете захотеть выполнить его, хотя ssh для окон в этом случае freeSSHD - это решение, которое нужно выполнить как целевой пользователь, поэтому все порождения происходят с одним и тем же пользователем (не выполняйте freeSSHD как SYSTEM, но с вашим именем пользователя)

пример Acrobat, выполненного из замазки

C: \ PsExec.exe \\ 127.0.0.1 -d -i "C: \ Program Files \ ... \ AcroRd32.exe"


one other thing to possibly consider using psexec is that v1.55 did not support session ID where as the current one v1.9x does

поэтому вместо "-i" это могло быть для
xp / nt системы "-i 0"
Виста / 7 систем "-и 1"

Попробуйте команду "старт". Он поддерживает запуск приложений Windows, но должен признаться, что никогда не тестировал его через сеанс Telnet.

Процессы Windows связаны с идентификатором сеанса Windows. Разные процессы могут взаимодействовать только в том случае, если у них один и тот же идентификатор сеанса, или Desktop.

это блог Брайан Бонди объясняет все это и многое другое, включая способы обойти всю безопасность Windows (путем запуска службы под учетной записью локальной системы).

На серверах windows есть инструмент schtasks.exe
Это диспетчер задач, но в командной строке.
Это может быть альтернативой запуску приложения с графическим интерфейсом пользователя на удаленном компьютере.
Чтобы сразу запустить приложение с графическим интерфейсом, задача должна быть «создана» (schtasks.exe / create) с прошлым временем и последующим вводом команды schtasks.exe /run с таким же параметром имени задачи.
Он протестирован и доказал свою полную работоспособность через Telnet-соединение.
соответствующая страница помощи https://technet.microsoft.com/en-us/library/cc772785(v=ws.10).aspx