Freigeben über


Dienstdatensatzliste

Da jeder Diensteintrag aus der Datenbank der installierten Dienste gelesen wird, erstellt der SCM einen Dienstdatensatz für den Dienst. Ein Dienstdatensatz umfasst:

  • Dienstname
  • Starttyp (Automatischer Start oder Bedarfsstart)
  • Dienststatus (siehe SERVICE_STATUS-Struktur)
    Art
    Aktueller Zustand
    Zulässige Steuerelementcodes
    Exit-Code
    Wartehinweis
  • Zeiger auf Abhängigkeitsliste

Der Benutzername und das Kennwort eines Kontos werden zum Zeitpunkt der Installation des Diensts angegeben. Der SCM speichert den Benutzernamen in der Registrierung und das Kennwort in einem sicheren Teil der lokalen Sicherheitsbehörde (Local Security Authority, LSA). Der Systemadministrator kann Konten mit Kennwörtern erstellen, die nie ablaufen. Alternativ kann der Systemadministrator Konten mit Kennwörtern erstellen, die ablaufen und die Konten verwalten, indem die Kennwörter regelmäßig geändert werden.

Der SCM behält zwei Kopien des Kennworts eines Benutzerkontos, ein aktuelles Kennwort und ein Sicherungskennwort bei. Das Kennwort, das beim ersten Installieren des Diensts angegeben wurde, wird als aktuelles Kennwort gespeichert, und das Sicherungskennwort wird nicht initialisiert. Wenn der SCM versucht, den Dienst im Sicherheitskontext des Benutzerkontos auszuführen, verwendet es das aktuelle Kennwort. Wenn das aktuelle Kennwort erfolgreich verwendet wird, wird es auch als Sicherungskennwort gespeichert. Wenn das Kennwort mit der ChangeServiceConfig--Funktion oder dem Dienststeuerungsprogramm geändert wird, wird das neue Kennwort als aktuelles Kennwort gespeichert, und das vorherige Kennwort wird als Sicherungskennwort gespeichert. Wenn der SCM versucht, den Dienst zu starten und das aktuelle Kennwort fehlschlägt, wird das Sicherungskennwort verwendet. Wenn das Sicherungskennwort erfolgreich verwendet wird, wird es als aktuelles Kennwort gespeichert.

Der SCM aktualisiert den Dienststatus, wenn ein Dienst statusbenachrichtigungen mithilfe der SetServiceStatus--Funktion sendet. Der SCM verwaltet den Status eines Treiberdiensts, indem er das E/A-System abfragt, anstatt Statusbenachrichtigungen zu empfangen, wie er von einem Dienst aus erfolgt.

Ein Dienst kann zusätzliche Typinformationen registrieren, indem die funktion SetServiceBits aufgerufen wird. Die funktionen NetServerGetInfo und NetServerEnum abrufen die unterstützten Diensttypen.