Modifications de service pour Windows Vista

Des modifications importantes ont été apportées au modèle de services pour améliorer les performances, la fiabilité, la sécurité, la gestion et l’administration des services.

Le tableau suivant récapitule les améliorations apportées aux services pour Windows Vista.

Amélioration Description
Démarrage automatique différé
Les services de démarrage automatique différés sont démarrés peu après le démarrage du système. Cela améliore les performances de démarrage du système tout en fournissant un démarrage automatique pour ces services. Pour définir l’indicateur de démarrage automatique différé, appelez la fonction ChangeServiceConfig2 avec SERVICE_CONFIG_DELAYED_AUTO_START_INFO.
Détection et récupération des défaillances
En cas d’échec d’un service, le gestionnaire de contrôle de service (SCM) peut effectuer une action d’échec, telle que le redémarrage du service dans une tentative de récupération après cet échec. Pour configurer une action d’échec, appelez ChangeServiceConfig2 avec SERVICE_CONFIG_FAILURE_ACTIONS.
Notifications de pré-arrêt
Un service peut s’inscrire pour recevoir une notification SERVICE_CONTROL_PRESHUTDOWN dans sa fonction HandlerEx avant de recevoir la notification d’arrêt réelle. Cela permet aux services avec une procédure d’arrêt longue plus de temps pour s’arrêter correctement. Pour définir la valeur du délai d’attente, appelez ChangeServiceConfig2 avec SERVICE_CONFIG_PRESHUTDOWN_INFO.
Accès réseau restreint
Vous pouvez utiliser des SID de service pour restreindre l’accès aux ports, aux protocoles ou à la direction du trafic réseau. Pour restreindre l’accès d’un service au réseau, utilisez l’interface INetFwServiceRestriction .
Exécution avec privilège minimum
Les services peuvent s’exécuter sous n’importe quel compte qui contient les privilèges requis (LocalService, NetworkService, LocalSystem, un compte de domaine ou un compte local) et indiquer les privilèges requis en appelant ChangeServiceConfig2 avec SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO. Le SCM supprime tous les privilèges qui ne sont pas requis.
Service Isolation
Un service peut isoler des objets, tels que des fichiers ou des clés de Registre, pour son utilisation exclusive en les sécurisant avec une entrée de contrôle d’accès qui contient un SID de service. Une fois ce SID attribué à un service, le propriétaire du service peut modifier les listes de contrôle d’accès des objets pour accorder l’accès au SID. Cela permet à un service d’accéder à des objets spécifiques sans s’exécuter sous un compte à privilèges élevés ou réduire la sécurité sur les objets. Pour définir le SID de service, appelez ChangeServiceConfig2 avec SERVICE_CONFIG_SERVICE_SID_INFO.
Notifications de changement d’état du service
Les services peuvent s’inscrire pour être avertis lorsqu’un service est créé, supprimé ou a une modification dans status à l’aide de la fonction NotifyServiceStatusChange. Cela est plus efficace que d’appeler la fonction QueryServiceStatusEx dans une boucle pour rechercher status.
Session 0 Isolation
Les services ont toujours été exécutés dans la session 0. Avant Windows Vista, le premier utilisateur à se connecter était également affecté à la session 0. Désormais, la session 0 est réservée exclusivement aux services et autres applications qui ne sont pas associés à une session utilisateur interactive. (Le premier utilisateur à ouvrir une session est connecté à la session 1, le deuxième utilisateur à se connecter est connecté à la session 2, etc.) La session 0 ne prend pas en charge les processus qui interagissent avec l’utilisateur.
Cette modification signifie qu’un service ne peut pas publier ou envoyer un message à une application et qu’une application ne peut pas envoyer ou publier un message à un service. En outre, les services ne peuvent pas afficher directement un élément d’interface utilisateur tel qu’une boîte de dialogue. Un service peut utiliser la fonction WTSSendMessage pour afficher une boîte de dialogue dans une autre session.

Services