Le gestionnaire de tâches et le processus svchost

Vous lisez sans doute cet article parce que vous vous demandez pourquoi sur terre y a-t-il près d'une centaine de processus s’exécutant sous le nom svchost.exe. Vous ne pouvez les tuer, et vous ne vous souvenez pas de les avoir crées... Alors qui sont ils ?

De quoi est-il Question ?

D’après Microsoft: "svchost.exe est un nom de processus d’hôte générique pour des services qui s’exécutent à partir des bibliothèques de liens dynamiques". Pouvons-nous avoir cela en français facile s'il vous plait ?

Depuis un certain moment, Microsoft a commencé à déplacer toutes les fonctionnalités des services internes de Windows vers des fichiers .dll au lieu des fichiers .exe. Sous un angle de programmation ceci a plus de sens en termes de ré-utilisabilité… mais le problème est que vous ne pouvez ouvrir un fichier .dll directement à partir de Windows, il doit être chargé à partir d'un exécutable en cours d’exécution (.exe). Ainsi est né le processus svchost.exe.

Pourquoi y a-t-il tant de svchost.exes en cours d'exécution ?

Si vous avez jamais jeté un coup d’œil dans la section Services de votre panneau de configuration vous pourriez remarquer qu'il y a beaucoup de services requis par Windows. Si chaque service s’exécutait sous une instance unique de svchost.exe, une défaillance dans l'un pourrait mettre un terme à l'ensemble de Windows… c'est pourquoi ils sont séparés.

Ces services sont organisés sous forme de groupe logiques, et par la suite une instance unique de svchost.exe est créée pour chaque groupe. Par exemple, une instance de svchost.exe administre les 3 services liés au pare-feu. Une autre instance de svchost.exe pourrait administrer tous les services liés à l'interface utilisateur, et ainsi de suite.

Que puis-je donc y faire ?

Vous pouvez réduire les services inutiles en désactivant ou en stoppant les services dont l’exécution n'est pas vraiment nécessaire. Par ailleurs, si vous remarquez une utilisation très intensive du processeur par une instance particulière de svchost.exe vous pouvez redémarrez les services s’exécutant sous cette instance.

La plus grande difficulté est d'identifier quels services sont exécutés sous une instance particulière de svchost.exe… nous discuterons de cela ci-dessous.

Si vous êtes curieux de quoi nous sommes entrain de parler, ouvrez tout simplement le Gestionnaire de Tâches et cocher la case « Afficher les processus de tous les utilisateurs » :

Gestionnaire de tâches

Vérification à partir de la Ligne de Commandes (Vista or XP Pro)

Si vous souhaitez savoir quels services sont hébergés par une instance particulière de svchost.exe, vous pouvez utiliser la commande tasklist à partir de l'invite de commande afin de voir la liste des services.

tasklist /SVC
Console tasklist

Le problème avec l'utilisation de la méthode de la ligne de commandes est que vous ne savez pas toujours ce que signifient ces noms énigmatiques.

Vérification dans le Gestionnaire de Tâches de Vista

Vous pouvez faire un clic droit sur un processus svchost.exe particulier, et ensuite choisir l'option « Accéder aux services ».

Accéder aux services

Ceci mènera à l'onglet Services, où les services s’exécutant sous ce processus svchost.exe seront sélectionnés :

Services

Ce qu'il y a de fameux à procéder de cette façon est que vous pouvez voir le vrai nom sous la colonne Description, ainsi vous pouvez choisir de désactiver le service si vous ne voulez pas qu'il s’exécute.

A l'aide de l'explorateur de processus sous Vista ou XP

Vous pouvez utiliser l'excellent utilitaire Explorateur de Processus de Microsoft/Sysinternals pour voir quels services s’exécutent en tant que partie du processus svchost.exe.

Passez la souris sur l'un des processus et une liste de tous les services s'affichera dans une fenêtre :

Explorateur de Processus

Ou vous pouvez double-cliquer sur une instance de svchost.exe et sélectionner l'onglet Services, où vous pouvez choisir d’arrêter l'un des services si vous le désirez.

Explorateur de Processus (propriétés)

Désactivation des Services

Ouvrez Services dans la section outils d'administration du Panneau de Configuration, ou saisissez services.msc dans la boite rechercher ou exécuter du menu démarrer.

Trouvez le service dans la liste que vous souhaitez désactiver, et double-cliquez dessus ou faites un clic droit et choisissez Propriétés.

Services

Basculez le type de démarrage sur Désactivé, et ensuite cliquez sur le bouton Arrêt pour l’arrêter immédiatement.

Désactiver

Vous pouvez également utiliser l'invite de commandes pour désactiver le service si vous le désirez. Dans cette commande "trkwks" représente le nom du Service à partir de la discussion précédente, mais si vous retournez à la commande tasklist au début de cet article vous remarquerez que vous pouvez également le trouver là-bas.

sc config trkwks start= disabled