Windows verwendet Sitzungen, um den Benutzern GUI-Anwendungen anzuzeigen. Ihr SSH-Server ist wahrscheinlich ein Windows-Dienst, der vom SYSTEM-Benutzer in der Sitzung 0 ausgeführt wird. Dies ist ohne grafische Anzeige. Daher werden die GUIs der Anwendungen, die Sie starten, nicht angezeigt.
Sie können dies mit dem Sysinternals Process Explorer überprüfen . Klicken Sie nach dem Start (als Administrator) mit der rechten Maustaste auf die Spaltenleiste, klicken Sie auf "Spalten auswählen" und fügen Sie "Sitzung", "Zugriff auf die Benutzeroberfläche", "Benutzername" und "Integritätsgrad" hinzu. Diese Informationen zeigen Ihnen für jeden Prozess, in dem die Anwendung ausgeführt wird ("Sitzung"), ob ein Fenster angezeigt wird ("UI-Zugriff"), unter welchem Konto ein Konto ausgeführt wird ("Benutzername") und mit welchen Berechtigungen ( "Integritätslevel", hoch bedeutet als Admin ).
Wenn Sie in Ihrer Benutzersitzung eine Anwendung von Ihrem SSH-Server ausführen möchten, können Sie dies mit einem anderen Sysinternals-Dienstprogramm namens PsExec : tunpsexec -i <session number> -accepteula <application to execute>
. Wenn Sie möchten, dass der Prozess mit Ihrem normalen Benutzer ausgeführt wird, können Sie auch den Parameter verwenden -u
und die Berechtigungen mit -l
entfernen, wenn Sie dies wünschen. Überprüfen Sie die laufende Hilfe psexec -?
.
Um Ihre Sitzungsnummer herauszufinden, können Sie den Befehl auch ausführen qwinsta
. Auf diese Weise benötigen Sie die Process Explorer GUI-Anwendung nicht.
Führen Sie zum Beispiel den Rechner aus, um den Rechner auszuführen: Führen Sie in einer SSH-Sitzung den folgenden Befehl aus qwinsta
:
C:\>qwinsta SESSIONNAME USERNAME ID STATE TYPE DEVICE services 0 Disc console john.doe 1 Active
Ihre Sitzung, die Sie verwenden möchten, ist also 1
in diesem Beispiel (es kann für Sie anders sein). Dann ausführen psexec -i 1 -accepteula calc.exe
. Der Rechner sollte jetzt auf Ihrem Desktop erscheinen. ( -accepteula
Dies ist bei der ersten Ausführung der Anwendung unbedingt erforderlich. Ohne diese wird die Anwendung die Lizenzvereinbarung in einem GUI-Fenster anzeigen, die natürlich aus den oben genannten Gründen nicht angezeigt wird. Bei nachfolgenden Aufrufen Sie können den Parameter ignorieren, da das GUI-Fenster nach der Übernahme nicht mehr angezeigt wird.
Wenn Sie dem autohotkey.exe
Befehl den psexec
oben beschriebenen Befehl voranstellen, würde ich davon ausgehen, dass das Skript funktioniert, aber ich kann es nicht selbst testen, da ich die Anwendung nicht kenne.