
Hintergrundinformation
Ich habe vor Kurzem Microsoft Office 2013 auf meinem Server installiert, um es mit RemoteApp auf allen meinen Heimcomputern bereitzustellen. Als ich nach der Installation versuchte, die Programme auszuführen, wurde mir die Fehlermeldung angezeigt, dass Sie eine Volumenlizenzversion von Office verwenden müssen, um Office auf einem PC mit installierten Terminaldiensten ausführen zu können. Dann habe ich alle Remotedesktop-Serverrollen deinstalliert und sie stattdessen manuell bereitgestellt, indem ich die Zulassungsliste deaktiviert habe. Es funktionierte einwandfrei, egal ob es lokal ausgeführt oder als RemoteApps bereitgestellt wurde.
Was ist die Zulassungsliste?
Bei einer normalen RemoteApp-Bereitstellung gibt es eine Liste von Anwendungen, die als RemoteApps ausgeführt werden dürfen. Die einzige Möglichkeit, diese zu konfigurieren, besteht darin, die Serverrolle „Terminaldienste“ zu verwenden. Es ist jedoch möglich, in die Windows-Registrierung zu gehen und die Liste zu deaktivieren, sodass jeder, der den Pfad kennt, auf jede Anwendung auf dem Server als RemoteApp zugreifen kann, ohne die Serverrolle „Terminaldienste“ installieren zu müssen.
Das hat mich neugierig auf etwas gemacht ...
Meine Frage
Kann eine Anwendung auf diese Weise erkennen, dass sie als RemoteApp ausgeführt wird (mit deaktivierter Zulassungsliste) und den Start in diesem Fall verweigern und nur starten, wenn sie auf dem lokalen Server-Desktop ausgeführt wird?
Antwort1
Wie kann eine Anwendung erkennen, dass sie als RemoteApp ausgeführt wird?
RemoteApp-Sitzungen werden auf dem Terminalserver von gestartet RDPINIT.EXE
. So kann die Anwendung prüfen, ob RDPINIT.EXE dieübergeordneter Prozess.
Einzelheiten:
Für jede RemoteApp-Sitzung eines Benutzers wird auf dem Terminalserver eine Instanz von RDPINIT.EXE ausgeführt. RDPINIT.EXE wird von USERINIT.EXE als RemoteApp-spezifische Implementierung von USERINIT.EXE geladen. RDPINIT.EXE fungiert als Watchdog, um RDPSHELL.EXE zu starten und das Starten und Herunterfahren von Prozessen zu überwachen. RDPSHELL.EXE ist die Shell, die anstelle von EXPLORER.EXE verwendet wird, um RemoteApp-Funktionalität bereitzustellen. RDPINIT.EXE überwacht den Prozesslebenszyklus von RDPSHELL.EXE und startet es neu, falls es abnormal beendet wird. RDPSHELL.EXE lädt eine Reihe von Windows-Ereignis-Hooks auf jeden Benutzer-Desktop in der Sitzung. Diese Ereignis-Hooks ermöglichen es RDPSHELL.EXE, den Status aller Fenster auf dem Desktop zu überwachen. ...
(Zitiert ausTechnet)