Einzelnen Beitrag anzeigen

Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#5

Re: Programm aus Dienst starten die xte

  Alt 30. Jan 2008, 12:43
LogonUser erstellt eine neue LogonSession. Eine Session ist ein LUID-Typ, der den neuen eingeloggten Benutzer auszeichnet. Mit dieser Session wird man auch bei anderen Computern angemeldet. D.h. jede Session hat eine andere Remote-Anmeldung. Daher kann man auf bereits existierende Netzwerkresourcen nicht zugreifen. Man muss sie erneut erstellen.
Übrigens habe ich erfahren, dass so erstellte Programme auch keine Nachricht bekommen, wenn der Computer herunterfährt. Das muss der eigene Dienst übernehmen, die Programme zu benachrichtigen.

Übrigens ist die folgende Reihenfolge von Funktionsaufrufen sehr empfehlenswert:

LogonUser
LoadUserProfile
CreateEnvironmentBlock(p^)
CreateProcessAsUser
Wait for Process (ka wie das genau heißt)
delete p;
UnloadUserProfile

für nicht Administratoren muss es so aussehen:


LogonUser
LoadUserProfile
CreateEnvironmentBlock(p^)
-hinzufügen von Benutzer in DACL von Winstation und Desktops
CreateProcessAsUser
Wait for Process (ka wie das genau heißt)
delete p;
UnloadUserProfile
-entfernen von Benutzer aus DACL von Winstation und Desktops

Alternative zur Änderung der W/D DACL wäre:

-Hinzufügen der LogonSID des Konsolenbenutzers in die TokenGruppen
LsaLogonUser(TokenGruppen)
LoadUserProfile
CreateEnvironmentBlock(p^)
CreateProcessAsUser
Wait for Process (ka wie das genau heißt)
delete p;
UnloadUserProfile
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat