Einzelnen Beitrag anzeigen

taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: NT-Service auf 64bit Windows

  Alt 22. Jun 2010, 07:38
As Designed. Interaktion von User-Destop mit Dienst ist nicht mehr. Und somit umgekehrt Start einer App aus dem Dienst für den User-Desktop auch nicht mehr. Ist seit Vista nicht mehr möglich (auch wenn dort das Häckchen für Userinteraktion noch vorhanden ist).
Hallo,
Das kann man so nicht einfach stehen lassen.
Es ist nur nicht mehr so einfach wie zuvor. Folgende Schritte sind (im groben) nötig.

WTSGetActiveConsoleSessionId um die ID der aktiven Windows Session zu holen.
WTSQueryUserToken um den Token für diese Session zu ermitteln.
DuplicateTokenEx um den Token zu duplizieren.
CreateEnvironmentBlock um eine Umgebung zu erzeugen welche uns zu dem Prozess durchlässt.
CreateProcessAsUser mit dem duplizierten Token und der erzeugten Umgebung.
Am Ende nicht vergessen die Tokens und Environment wieder freizugeben.

So ist es weiterhin möglich aus einem Dienst welcher im System Kontext läuft Z.B. einen Prozess im User Kontext zu erzeugen.

Gruss Werner
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat