Naja, einige Probleme und Fehler sehe ich da drin schon:
1. GetActiveWtsSession liefert eine Session zurück. Es können aber mehrere vorhanden sein. Welche soll denn nun verwendet werden? Meist geht das nur über ein Programm, welches schon dort ist und vom User angewiesen worden ist, etwas zu machen. Sonst kann man auch gleich WtsGetActiveConsoleSession nehmen.
2. Eine modale Messagebox aus dem Service? Normalerweise sind Dienste wiederverwendbar. D.h. es ist eine Schleife drin, in der Dinge abgearbeitet werden. Dort zu blocken würde bedeuten, dass ein anderer User nicht dasselbe machen kann.
Am besten wäre es, wenn der Dienst daher sofort ein Programm in die Session startet und das Programm den Rest macht. Man könnte natürlich auch einen Thread machen (kompliziert zu verwalten).
3. CreateProcessAsUser wird fehlschlagen, wenn parameter inherit
handle auf true ist und die Session eine andere. Handlevererbung über Sessions geht nicht.
Mit
JWSCL gehts auch einfacher
JwCreateProcessInSession
(
SVN Trunk version enthält neuste Version)