Können Sie zurück in den lokalen Computer greifen und eine Anwendung mit Parametern aus Ihrer Remote-Sitzung ausführen?

1326
Bob.

Ich schreibe ein Programm, das als RemoteApp vom Server auf den Clientcomputer verwendet wird.

Ich weiß, dass System.Windows.Forms.SystemInformation.TerminalServerSessionich mithilfe der RemoteApp-Ausführung feststellen kann, ob die aktuelle Sitzung eine lokale Sitzung oder eine Remote-Sitzung ist.

Gibt es eine Möglichkeit für mich, wenn die Terminalserver-Sitzung wahr ist (wenn der Benutzer die App remote ausführt), dem lokalen Computer mitzuteilen, dass er eine Anwendung wie MS Word ausführen soll? Ich würde es gerne nativ machen, ohne Plug-Ins oder Psexec, wenn es geholfen werden kann.

0
http://www.tricerat.com/blog/166 STTR vor 11 Jahren 0
@STTR Relevanz? Bob. vor 11 Jahren 0

2 Antworten auf die Frage

1
AndisaIT Specialist Integrator

hängt davon ab, wie weit die Benutzer vom Server entfernt sind, nimmt jedoch an, dass sie sich alle in einem Büro am Ende eines Netzwerks oder eines VPN befinden.

Ich würde eine dotNet-App erstellen, die eine Verbindung zu einem zentralen SQL-Server herstellt und alle 250 ms nach einem einfachen Datensatz mit dem Namen Ihres PCs durchsucht. Das zweite Feld im Datensatz ist das auszuführende Programm.

Dies bedeutet, dass eine serverbasierte App in jede Datenbank schreiben kann, um ein Programm lokal zu öffnen. Innerhalb von 250 ms findet die lokale App den Datensatz, startet die App und löscht den Datensatz.

0
Frank Thomas

Sie haben 4 Optionen mit unterschiedlichen Komplexitäts-, Zuverlässigkeits- und Bereitstellungsaspekten.

1) PSEXEC. Im Ernst, viele Leute benutzen Psexec für diesen Zweck und arbeiten meistens. bei weitem die einfachste Lösung. Verwenden Sie -i, um mit dem Desktop zu interagieren.

2) WMI. Sie können .net- oder VBScript-Code schreiben, um die Client-App auszuführen. Es ist genauso skripty wie psexec, ist aber vollständig native. Ich hatte zuvor Probleme mit der Zuverlässigkeit von WMI, aber das waren domänenweite, automatisierte Operationen, und ein Großteil des Problems schien das Power-Management auf leeren Workstations zu sein. http://www.codeproject.com/Articles/31113/Create-a-Remote-Process- using-WMI-in-C

3) Windows Taskplaner. Planen Sie auf dem Server eine Aufgabe, die in der Benutzersitzung auf dem Client ausgeführt werden soll. immer noch scripty, mit vielen beweglichen Teilen. http://technet.microsoft.com/de-de/library/cc772785%28v=ws.10%29.aspx

4) Erstellen Sie einen Windows-Netzwerkdienst für den lokalen PC und starten Sie nach dem Signal die Task unter der Benutzersitzung. Möglicherweise müssen Sie dazu den Task-Scheduler verwenden. Viel Arbeit zum Entwickeln und Testen, schwer zu implementieren, viele bewegliche Teile und noch immer an bestimmten Stellen, aber dies wäre wahrscheinlich die Antwort von microsofts, da es ihre Anleitung für die Prozesserhöhung richtig implementiert.

Mit PSEXEC würde ich also von der RemoteApp von der Client-Maschine auf die Client-Maschine wechseln, um eine Anwendung auszuführen? Bob. vor 11 Jahren 0
Ja. mehr oder weniger. Die eigentliche Ausführung der RemoteApp findet auf dem Server statt. Daher können Sie nicht einfach einen Process.Start (Pfad) ausführen. Der Winword-Prozess würde auf dem Server gestartet. Genauer gesagt, der Client stellt eine Verbindung zum Server her, um die Ausgabe der Remote-App abzurufen, und der Server stellt eine Verbindung zum Client her, um die lokale App auszuführen. PSexec würde sich auf dem Server befinden, von dem die Remoteapp es aufrufen kann. Frank Thomas vor 11 Jahren 0
Ich hatte gehofft, dass es eine Möglichkeit gibt, die Umgebungsvariablen in C # dazu zu verwenden, da die Verwendung von PSEXEC bedeuten würde, dass der Client mehr Material autorisieren muss, um zu seinem Server hinzugefügt zu werden. Bob. vor 11 Jahren 0
Es geht nicht um die Umgebungskonfiguration per se, obwohl ich vermute, dass Pfadvariablen aus der remoteApps-Umgebung zu serverseitigen Pfaden aufgelöst werden. Auch wenn Sie den Pfad auf dem Client erhalten haben, würde der Remoteapp-Prozess ihn ausführen und auf dem Server ausgeführt werden, nicht auf dem Client. Legen Sie einfach psexec als Abhängigkeit im bin-Verzeichnis ab oder sehen Sie sich die taskscheduler / wmi-Methoden an. Frank Thomas vor 11 Jahren 0