Service/Task > Shell (User/Pass) > Visible

Hello Community

meine Frage ist nicht so einfach, daß ich den Betreff/Titel des Posts vernünftig gestalten konnte … ich erklär’s mal:

  1. Ein Service (oder Scheduled Task, hauptsache im Hintergrund und mit „PC hochfahren“ aktiv) muss ein LogFile überwachen.

  2. Tritt eine bestimmte Konstellation in diesem Logfile, so muss geprüft werden, ob der Prozess XY läuft - und falls dem so ist, muss er beendet werden

  3. Wird festgestellt, daß der Prozess XY nicht läuft (also entweder von vorneherein nicht oder aber durch Schritt #2 bewusst beendet), so muß Schritt vier eingeleitet werden.

Bis hierhin funktioniert das ohne Probleme.

  1. Prozess XY muss unter einem anderen Benutzerkonto gestartet werden (quasi wie „ausführen als …“), Username und Passwort sind bekannt.

Und dieser Schritt macht Probleme: die gestartete Application wird ausgeführt (im Taskmanager unter Prozesse gelistet), jedoch nicht angezeigt.

Tätige ich das „ausführen als …“ von Hand, so bekomme ich die Applikation allerdings angezeigt. Genauso soll es auch automatisiert laufen, doch ich bekomme das absolut nicht hin :frowning:

Um dem beliebten „poste doch mal den Code“ vorzubeugen: ich habe diverse Varianten ausprobiert und verworfen, somit habe ich den Code nicht mehr …

Weiß jemand Rat? Mir würden ja zur Not auch einfach die richtigen Stichworte zum googlen reichen :wink:

Hallo!
Ich interpretiere es so, dass die Anwendung, die gestartet werden soll, eine grafische Oberfläche zeigen soll, richtig?
Damit reicht es nicht aus, dass der Prozess „unter einem bestimmten Benutzerkonto“ läuft, sondern diese grafische Oberfläche muss ja auf einem Desktop einer Benutzersitzung des entsprechenden Benutzers dargestellt werden.
Am Rechner kann der Benutzer angemeldet sein, muss aber nicht. Genauso können mehrere Benutzer am Rechner angemeldet sein (Stichwort: Remote Desktop).
Sprich: Du musst zunächst den Desktop der gewünschten Benutzersitzung suchen und dann noch eine Möglichkeit finden, den Prozess in dieser Sitzung zu starten. Könnte sein, dass die Win32 API da was hergibt. CreateProcess() oder CreateProcessAsUser() gibt es da, glaube ich.

Ab Win7/Server 2008R2 (bin mir nicht sicher, u.U. schon ab Vista/Server 2008) gibt es zudem etwas, das sich Session0-Isolation nennt - kann sein, dass Dir das auch noch dazwischenfunkt.

Ist jedenfalls nicht so ganz ohne.

Viel Erfolg,
Martin

Hi Martin,

ja, hast mich richtig verstanden. Ich habe nun eine Lösung gefunden … das Zauberwort heißt „PsExec“ und ist ein Tool von Sysinterals. Damit geht’s :wink:

Hallo nochmal!
Tja, PsExec kann sowas, aber auch noch ganz andere Sachen. Aber ich hatte angenommen, dass Du es selbst machen möchtest.
Na ja, Hauptsache gelöst, oder?
Gruß,
Martin