Ich verwende PSExec, um ein bestimmtes Serverprogramm mit einer winzigen GUI auf einem anderen Computer zu öffnen. Sowohl der lokale Computer als auch das Ziel sind Win7 64bit. Ich öffne es mit
psexec \meinanderercomputer -u Me -p meinpass -i -d -h meineapp.exe
Das funktioniert gut, wenn ich auch am anderen Computer angemeldet bin. Aber ich möchte das Programm auf diese Weise ausführen, damit ich mich nicht an diesem Computer anmelden muss.
Heute habe ich versucht, die Anwendung auszuführen, ohne angemeldet zu sein, nur um zu sehen, was passiert. Ich dachte, es würde einen Fehler zurückgeben. PSExec hat mir jedoch eine Prozess-ID zurückgegeben.
Dann habe ich mich bei diesem Computer angemeldet und zu meiner Überraschung hatte ich eine Art grafischen „Schatten“, also die Form der Anwendung, die ich ausführen wollte! … als ob sie sich geöffnet hätte, obwohl ich nicht angemeldet war.
Ich dachte, es läge an einem Problem mit der Bildschirmaktualisierung, und habe verschiedene Möglichkeiten ausprobiert, die App zu „aktivieren“ oder mit ihr zu interagieren, aber sie wurde nicht richtig angezeigt. Beim Verwenden des Taskmanagers habe ich festgestellt, dass der Speicherverbrauch dieser App zu gering war, als er sein sollte … also schätze ich, dass es irgendwann einfach schiefgelaufen ist. Und das ist es, was ich wirklich erwarte, nämlich dass es ausgeführt wird.
Fragen: Warum kann PSExec eine interaktive Anwendung ohne Anmeldung erfolgreich öffnen? Warum funktioniert meine interaktive Anwendung dann nicht richtig?
Antwort1
entsprechend derPSExecSeite bewirkt der Schalter -i [Sitzung] Folgendes:
Führen Sie das Programm so aus, dass es mit dem Desktop der angegebenen Sitzung auf dem Remote-System interagiert. Wenn keine Sitzung angegeben ist, wird der Prozess in der Konsolensitzung ausgeführt.
In Ihrem Befehl geben Sie nicht unmittelbar nach -i eine Sitzung an, wie in den Manpages angegeben.
Mir fällt auch auf, dass Sie -d angegeben haben. Ich glaube nicht, dass Sie -i und -d mischen können, insbesondere wenn der Benutzer nicht angemeldet ist, da -i in der Konsolensitzung ausgeführt wird, -d jedoch besagt, dass die Konsolensitzung nicht zur Bestimmung der Prozesslebensdauer verwendet werden soll:
-d Nicht warten, bis der Prozess beendet ist (nicht interaktiv).