Liste des enregistrements de service

Comme chaque entrée de service est lue à partir de la base de données des services installés, le SCM crée un enregistrement de service pour le service. Un enregistrement de service comprend :

  • Nom du service
  • Type de démarrage (démarrage automatique ou démarrage à la demande)
  • Service status (consultez la structure SERVICE_STATUS)
    Type
    État actuel
    Codes de contrôle acceptables
    Code de sortie
    Indicateur d’attente
  • Pointeur vers la liste de dépendances

Le nom d’utilisateur et le mot de passe d’un compte sont spécifiés au moment de l’installation du service. Le SCM stocke le nom d’utilisateur dans le Registre et le mot de passe dans une partie sécurisée de l’autorité de sécurité locale (LSA). L’administrateur système peut créer des comptes avec des mots de passe qui n’expirent jamais. L’administrateur système peut également créer des comptes avec des mots de passe qui expirent et gérer les comptes en modifiant régulièrement les mots de passe.

Le SCM conserve deux copies du mot de passe d’un compte d’utilisateur, un mot de passe actuel et un mot de passe de sauvegarde. Le mot de passe spécifié lors de la première installation du service est stocké en tant que mot de passe actuel et le mot de passe de sauvegarde n’est pas initialisé. Lorsque le SCM tente d’exécuter le service dans le contexte de sécurité du compte d’utilisateur, il utilise le mot de passe actuel. Si le mot de passe actuel est utilisé avec succès, il est également enregistré en tant que mot de passe de sauvegarde. Si le mot de passe est modifié avec la fonction ChangeServiceConfig ou l’utilitaire du panneau de configuration Services, le nouveau mot de passe est stocké en tant que mot de passe actuel et le mot de passe précédent est stocké en tant que mot de passe de sauvegarde. Si le SCM tente de démarrer le service et que le mot de passe actuel échoue, il utilise le mot de passe de sauvegarde. Si le mot de passe de sauvegarde est utilisé avec succès, il est enregistré en tant que mot de passe actuel.

Le SCM met à jour le service status lorsqu’un service l’envoie status notifications à l’aide de la fonction SetServiceStatus. Le SCM conserve la status d’un service de pilote en interrogeant le système d’E/S, au lieu de recevoir status notifications, comme il le fait à partir d’un service.

Un service peut inscrire des informations de type supplémentaires en appelant la fonction SetServiceBits . Les fonctions NetServerGetInfo et NetServerEnum obtiennent les types de service pris en charge.