Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Möglichkeit ein Programm aus einem Service zu starten

  Alt 23. Jul 2009, 10:53
Am besten verwendest du MSDN-Library durchsuchenCreateProcessAsUser. Dies verwendest du folgendermaßen:
1. Hole dir mit MSDN-Library durchsuchenWTSQueryUserToken das Token des aktuell angemeldeten Benutzers - du willst dein Programm vermutlich nicht mit den Rechten des Diensts starten lassen. Falls doch, kannst du einfach mit MSDN-Library durchsuchenDuplicateToken das Token des Diensts duplizieren. Beachte, dass du für WTSQueryUserToken als System laufen musst, da du sonst kaum das TCB-Privileg haben wirst.
2. Setze mit MSDN-Library durchsuchenSetTokenInformation die Session-ID des Tokens auf MSDN-Library durchsuchenWTSGetActiveConsoleSessionId - damit erreichst du, dass das Programm auch mit dem Benutzer interagieren kann.
3. Starte mit CreateProcessAsUser dein Programm. In der STARTUPINFO-Struktur solltest du lpDesktop auf WinSta0\Default setzen, damit das Programm auf dem normalen Desktop landet.

Diese Hinweise sind nicht getestet.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat