Dienstbenutzerkonten
Jeder Dienst wird im Sicherheitskontext eines Benutzerkontos ausgeführt. Der Benutzername und das Kennwort eines Kontos werden von der CreateService-Funktion zum Zeitpunkt der Installation des Diensts angegeben. Der Benutzername und das Kennwort können mithilfe der ChangeServiceConfig-Funktion geändert werden. Sie können die QueryServiceConfig-Funktion verwenden, um den Benutzernamen (aber nicht das Kennwort) abzurufen, der einem Dienstobjekt zugeordnet ist. Der Dienststeuerungs-Manager (SCM) lädt das Benutzerprofil automatisch.
Beim Starten eines Diensts meldet sich der SCM bei dem Konto an, das dem Dienst zugeordnet ist. Wenn die Anmeldung erfolgreich ist, erstellt das System ein Zugriffstoken und fügt es an den neuen Dienstprozess an. Dieses Token identifiziert den Dienstprozess in allen nachfolgenden Interaktionen mit sicherungsfähigen Objekten (Objekten, denen eine Sicherheitsbeschreibung zugeordnet ist). Wenn der Dienst beispielsweise versucht, ein Handle für eine Pipe zu öffnen, vergleicht das System das Zugriffstoken des Diensts mit dem Sicherheitsdeskriptor der Pipe, bevor der Zugriff gewährt wird.
Das SCM verwaltet nicht die Kennwörter von Dienstbenutzerkonten. Wenn ein Kennwort abgelaufen ist, schlägt die Anmeldung fehl, und der Dienst kann nicht gestartet werden. Der Systemadministrator, der Konten zu Diensten zuweist, kann Konten mit Kennwörtern erstellen, die nie ablaufen. Der Administrator kann auch Konten mit kennwörtern verwalten, die ablaufen, indem er ein Dienstkonfigurationsprogramm verwendet, um die Kennwörter regelmäßig zu ändern.
Wenn ein Dienst einen anderen Dienst erkennen muss, bevor er seine Informationen freigibt, kann der zweite Dienst entweder dasselbe Konto wie der erste Dienst verwenden oder in einem Konto ausgeführt werden, das zu einem Alias gehört, der vom ersten Dienst erkannt wird. Dienste, die über das Netzwerk verteilt ausgeführt werden müssen, sollten in domänenweiten Konten ausgeführt werden.
Sie können eines der folgenden speziellen Konten angeben, anstatt ein Benutzerkonto für den Dienst anzugeben: