Si vous avez déjà parcouru le Gestionnaire des tâches, vous vous êtes peut-être demandé pourquoi il y a tant de processus Service Host en cours d’exécution. Vous ne pouvez pas les tuer, et vous ne les avez certainement pas lancés. Alors, que sont-ils ?

Cet article fait partie de notre série d’articles expliquant divers processus trouvés dans le gestionnaire des tâches, comme dwm.exe, ctfmon.exe, mDNSResponder.exe, conhost.exe, rundll32.exe, Adobe_Updater.exe, et bien d’autres. Vous ne savez pas ce que sont ces services ?

Alors, qu’est-ce que le processus de l’hôte de service ?

Voici la réponse, selon Microsoft :

Svchost.exe est un nom de processus hôte générique pour les services qui s'exécutent à partir de bibliothèques à liaison dynamique.

Mais cela ne nous aide pas beaucoup. Il y a quelque temps, Microsoft a commencé à modifier une grande partie des fonctionnalités de Windows en passant de la dépendance aux services internes de Windows (qui s’exécutaient à partir de fichiers EXE) à l’utilisation de fichiers DLL. Du point de vue de la programmation, cela rend le code plus réutilisable et sans doute plus facile à maintenir à jour.

Le problème est que vous ne pouvez pas lancer un fichier DLL directement à partir de Windows de la même manière qu’un fichier exécutable. Au lieu de cela, un shell qui est chargé à partir d’un fichier exécutable est utilisé pour héberger ces services DLL. C’est ainsi qu’est né le processus Service Host (svchost.exe).

Pourquoi y a-t-il tant de processus hôte de service en cours d’exécution ?

Si vous avez déjà jeté un coup d’œil à la section Services du Panneau de configuration, vous avez probablement remarqué que Windows requiert un grand nombre de services. Si chaque service était exécuté par un seul processus hôte de service, la défaillance d’un seul service pourrait potentiellement faire tomber tout Windows. Au lieu de cela, les services sont séparés.

Les services sont organisés en groupes logiques qui sont tous quelque peu liés, puis une seule instance de Service Host est créée pour héberger chaque groupe. Par exemple, un processus Service Host exécute les trois services liés au pare-feu. Un autre processus Service Host pourrait exécuter tous les services liés à l’interface utilisateur, et ainsi de suite.

Dans l’image ci-dessous, par exemple, vous pouvez voir qu’un processus Service Host exécute plusieurs services réseau connexes, tandis qu’un autre exécute les services liés aux appels de procédure à distance.

Que puis-je faire de toutes ces informations ?

Honnêtement, pas grand-chose. À l’époque de Windows XP (et des versions précédentes), lorsque les PC disposaient de ressources beaucoup plus limitées et que les systèmes d’exploitation n’étaient pas aussi bien réglés, il était souvent recommandé d’empêcher Windows d’exécuter des services inutiles. De nos jours, nous ne recommandons plus de désactiver les services.

Les PC modernes ont tendance à être chargés de mémoire et de processeurs très puissants. Si l’on ajoute à cela le fait que la manière dont les services Windows sont gérés dans les versions modernes (et quels services sont exécutés) a été rationalisée, l’élimination des services dont vous pensez ne pas avoir besoin n’a plus vraiment d’impact.

Cela dit, si vous remarquez qu’une instance particulière de Service Host – ou un service connexe – cause des problèmes, comme une utilisation excessive et continue du CPU ou de la RAM, vous pouvez vérifier les services spécifiques qui sont impliqués. Cela pourrait au moins vous donner une idée de l’endroit où commencer le dépannage.

Il y a plusieurs façons de voir exactement quels services sont hébergés par une instance particulière de Service Host. Vous pouvez vérifier les choses dans le Gestionnaire des tâches ou à l’aide d’une excellente application tierce appelée Process Explorer.

Vérifier les services connexes dans le Gestionnaire des tâches

Si vous utilisez Windows 8 ou 10, les processus sont affichés dans l’onglet « Processus » du Gestionnaire des tâches sous leur nom complet. Si un processus sert d’hôte à plusieurs services, vous pouvez voir ces services en développant simplement le processus. Il est ainsi très facile d’identifier les services qui appartiennent à chaque instance du processus hôte de service.

Vous pouvez cliquer avec le bouton droit de la souris sur un service individuel pour l’arrêter, l’afficher dans l’application « Services » du Panneau de configuration, ou même rechercher en ligne des informations sur le service.

Si vous utilisez Windows 7, les choses sont un peu différentes. Le gestionnaire de tâches de Windows 7 ne regroupe pas les processus de la même manière et n’affiche pas non plus les noms de processus habituels – il affiche uniquement toutes les instances de « svchost.exe » en cours d’exécution. Vous deviez explorer un peu pour déterminer les services liés à une instance particulière de « svchost.exe ».

Dans l’onglet « Processus » du Gestionnaire des tâches de Windows 7, faites un clic droit sur un processus « svchost.exe » particulier, puis choisissez l’option « Aller au service ».

Vous passerez alors à l’onglet « Services », où les services exécutés sous ce processus « svchost.exe » sont tous sélectionnés.

Vous pouvez alors voir le nom complet de chaque service dans la colonne « Description », ce qui vous permet de désactiver le service si vous ne voulez pas qu’il fonctionne ou de déterminer pourquoi il vous pose problème.

Vérifiez les services connexes à l’aide de Process Explorer

Microsoft fournit également un excellent outil avancé pour travailler avec les processus dans le cadre de sa gamme Sysinternals. Il suffit de télécharger Process Explorer et de l’exécuter – c’est une application portable, il n’est donc pas nécessaire de l’installer. Process Explorer offre toutes sortes de fonctionnalités avancées – et nous vous recommandons vivement de lire notre guide pour comprendre Process Explorer pour en savoir plus.

Pour notre propos, cependant, Process Explorer regroupe les services connexes sous chaque instance de « svchost.exe ». Ils sont répertoriés par leur nom de fichier, mais leur nom complet est également indiqué dans la colonne « Description ».

Vous pouvez également passer le curseur de votre souris sur l’un des processus « svchost.exe » pour afficher une fenêtre contextuelle contenant tous les services liés à ce processus, même ceux qui ne sont pas en cours d’exécution.

Ce processus pourrait-il être un virus ?

Le processus lui-même est un composant officiel de Windows. Il est possible qu’un virus ait remplacé le véritable Service Host par un exécutable de son cru, mais c’est très peu probable. Pour en être sûr, vous pouvez vérifier l’emplacement du fichier sous-jacent du processus.

Dans le Gestionnaire des tâches, cliquez avec le bouton droit de la souris sur un processus Service Host et choisissez l’option « Ouvrir l’emplacement du fichier ».

Si le fichier est stocké dans le dossier Windows®System32, vous pouvez être certain que vous n’avez pas affaire à un virus.

Cela dit, si vous souhaitez avoir l’esprit tranquille, vous pouvez toujours rechercher les virus à l’aide de votre antivirus préféré. Mieux vaut prévenir que guérir !