Elenco record del servizio

Poiché ogni voce di servizio viene letto dal database dei servizi installati, SCM crea un record di servizio per il servizio. Un record di servizio include:

  • Nome del servizio
  • Tipo di inizio (avvio automatico o inizio richiesta)
  • Stato del servizio (vedere la struttura SERVICE_STATUS )
    Tipo
    Stato corrente
    Codici di controllo accettabili
    Codice di uscita
    Hint di attesa
  • Puntatore all'elenco delle dipendenze

Il nome utente e la password di un account vengono specificati al momento dell'installazione del servizio. SCM archivia il nome utente nel Registro di sistema e la password in una parte sicura dell'Autorità di sicurezza locale (LSA). L'amministratore di sistema può creare account con password che non scadono mai. In alternativa, l'amministratore di sistema può creare account con password che scadono e gestiscono gli account modificando periodicamente le password.

SCM mantiene due copie della password di un account utente, una password corrente e una password di backup. La password specificata la prima volta che il servizio viene installato viene archiviato come password corrente e la password di backup non viene inizializzata. Quando SCM tenta di eseguire il servizio nel contesto di sicurezza dell'account utente, usa la password corrente. Se la password corrente viene usata correttamente, viene salvata anche come password di backup. Se la password viene modificata con la funzione ChangeServiceConfig o l'utilità del pannello di controllo Servizi, la nuova password viene archiviata come password corrente e la password precedente viene archiviata come password di backup. Se SCM tenta di avviare il servizio e la password corrente ha esito negativo, usa la password di backup. Se la password di backup viene usata correttamente, viene salvata come password corrente.

SCM aggiorna lo stato del servizio quando un servizio invia le notifiche di stato usando la funzione SetServiceStatus . SCM mantiene lo stato di un servizio driver eseguendo una query sul sistema di I/O, anziché ricevere notifiche di stato, come avviee da un servizio.

Un servizio può registrare informazioni di tipo aggiuntive chiamando la funzione SetServiceBits . Le funzioni NetServerGetInfo e NetServerEnum ottengono i tipi di servizio supportati.