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

1094
Bob.

Я пишу программу, которая используется в качестве RemoteApp с сервера на клиентский компьютер.

Я знаю, что с помощью System.Windows.Forms.SystemInformation.TerminalServerSessionя могу определить, является ли текущий сеанс локальным сеансом или удаленным сеансом из выполнения RemoteApp.

Есть ли способ для меня, если сеанс сервера терминалов имеет значение true (когда пользователь запускает приложение удаленно), чтобы сказать локальному компьютеру, чтобы выполнить приложение, как MS Word? Я хотел бы сделать это изначально, без использования плагинов или psexec, если это можно помочь.

0
http://www.tricerat.com/blog/166 STTR 10 лет назад 0
@STTR Актуальность? Bob. 10 лет назад 0

2 ответа на вопрос

1
AndisaIT Specialist Integrator

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

Я бы создал приложение dotNet, которое подключалось бы к центральному серверу SQL, и каждые 250 мс сканировал бы простую запись с именем вашего ПК. Второе поле в записи - это программа для запуска.

Это означает, что приложение на основе сервера может записывать в БД каждый раз, когда оно хочет, чтобы открыть программу локально. в течение 250 мс локальное приложение найдет запись, запустит приложение и удалит запись.

0
Frank Thomas

you have 4 options with varying degrees of complexity, reliability, and deployment considerations.

1) PSEXEC. seriously, lots of people use psexec for this purpose, and works most of the time. by far the simplest solution. use -i so it can interact with the desktop.

2) WMI. you can write .net or VBScript code to execute the client app. its just as scripty as psexec, but is entirely native. I've had reliability problems with WMI before, but those were domain wide automated ops, and much of the issue appeared to be power management on idle workstations. http://www.codeproject.com/Articles/31113/Create-a-Remote-Process-using-WMI-in-C

3) Windows task scheduler. from the server schedule a task to execute on the client in the users session. still scripty, with lots of moving parts. http://technet.microsoft.com/en-us/library/cc772785%28v=ws.10%29.aspx

4)create a windows network service for the local PC, and upon signal, launch the task under the users session. you may have to use the task scheduler to accomplish this. lots of work to dev and test, hard to deploy, lots of moving parts, and still scripty in places, but this would probably be microsofts answer, as it correctly implements their guidance for process elevation.

Так что с PSEXEC, я буду удаленно с клиентского компьютера на клиентский компьютер из RemoteApp для выполнения приложения? Bob. 10 лет назад 0
да. более менее. фактическое выполнение RemoteApp происходит на сервере, поэтому вы не можете просто выполнить Process.Start (путь); процесс winword начнется на сервере. поэтому точнее сказать, что клиент подключается к серверу для получения выходных данных удаленного приложения, а сервер подключается к клиенту для запуска локального приложения. PSexec будет размещен на сервере, где удаленное приложение может вызвать его. Frank Thomas 10 лет назад 0
Я надеялся, что есть способ, которым я мог бы использовать переменные окружения в C #, чтобы сделать это, поскольку использование PSEXEC означало бы, что клиенту нужно будет авторизовать больше материала для добавления на свой сервер. Bob. 10 лет назад 0
Речь идет не о конфигурации среды как таковой, хотя я подозреваю, что переменные пути из среды remoteApps будут преобразованы в пути на стороне сервера. Кроме того, даже если вы получили путь на клиенте, если процесс remoteapp его выполнил, он все равно будет работать на сервере, а не на клиенте. просто удалите psexec в каталог bin как зависимость или посмотрите на методы taskscheduler / wmi. Frank Thomas 10 лет назад 0