modifications de Service pour Windows Vista
Des modifications significatives 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ésume les améliorations apportées aux services pour Windows Vista.
| Amélioration | Description |
|---|---|
| Démarrage automatique retardé |
Les services à 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 retardé, appelez la fonction ChangeServiceConfig2 avec les _ _ _ _ _ informations de démarrage automatique différé de la configuration du service. |
| Détection des défaillances et récupération |
En cas de défaillance d’un service, le gestionnaire de contrôle des services (SCM) peut effectuer une action d’échec, telle que le redémarrage du service en vue d’une tentative de récupération à partir de cet échec. Pour configurer une action d’échec, appelez ChangeServiceConfig2 avec des actions d’échec de configuration de service _ _ _. |
| Notifications de préarrêt |
Un service peut s’inscrire pour recevoir une notification de _ _ préarrêt du contrôle de service dans sa fonction HandlerEx avant de recevoir la notification d’arrêt réelle. Cela permet de réduire le temps d’arrêt normal des services avec une longue procédure d’arrêt. Pour définir la valeur du délai d’attente, appelez ChangeServiceConfig2 avec les _ _ _ informations de préversion de la configuration du service. |
| Accès limité au réseau |
Vous pouvez utiliser les SID de service pour restreindre l’accès aux ports, aux protocoles ou à la direction du trafic réseau. Pour limiter l’accès d’un service au réseau, utilisez l’interface INetFwServiceRestriction . |
| Exécution avec privilèges 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 les _ _ _ _ informations de privilèges requis pour la configuration de service. Le SCM supprime tous les privilèges qui ne sont pas requis. |
| Isolation du service |
Un service peut isoler des objets, tels que des fichiers ou des clés de Registre, pour son usage exclusif en les sécurisant à l’aide d’une entrée de contrôle d’accès qui contient un SID de service. Une fois ce SID affecté à 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 du service, appelez ChangeServiceConfig2 avec les _ _ _ _ informations SID du service de configuration de service. |
| Notifications de modification de l’état du service |
Les services peuvent s’inscrire pour être avertis lorsqu’un service est créé, supprimé ou a une modification de l’État à l’aide de la fonction NotifyServiceStatusChange . Cela est plus efficace que l’appel de la fonction QueryServiceStatusEx dans une boucle pour interroger l’État. |
| Isolation de la session 0 |
Les services s’exécutent toujours dans la session 0. avant Windows Vista, le premier utilisateur à se connecter était également affecté à la session 0. À présent, 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 à se connecter est connecté à la session 1, le deuxième utilisateur à se connecter est connecté à la session 2, et ainsi de suite.) La session 0 ne prend pas en charge les processus qui interagissent avec l’utilisateur. Cette modification signifie qu’un service ne peut pas poster ou envoyer un message à une application et qu’une application ne peut pas envoyer ou poster un message à un service. En outre, les services ne peuvent pas afficher directement un élément de l’interface utilisateur, par exemple une boîte de dialogue. Un service peut utiliser la fonction WTSSendMessage pour afficher une boîte de dialogue dans une autre session. |