Les administrateurs Windows rencontrent souvent une situation frustrante : tenter de démarrer ou d’arrêter un service services.mscle laisse bloqué dans un état « En cours d’exécutionStopping » ou « En attenteStarting ».Les boutons sont grisés et, quoi que vous fassiez, Windows semble figé. Généralement, ce comportement indique que le service ou son processus est bloqué ou attend une action qui ne se produit pas. Dans ce cas, même l’exécution net stopde la commande depuis l’invite de commandes renvoie une erreur du type « Le service est en cours de démarrage ou d’arrêt. Veuillez réessayer ultérieurement », ou le système se bloque tout simplement. C’est assez étrange, mais le système est dans un état de blocage et les méthodes de contrôle habituelles sont inopérantes.
Désormais, au lieu de redémarrer tout le système (ce qui semble parfois être la seule solution), il existe des méthodes pour forcer l’arrêt d’un processus ou service bloqué. Ce n’est pas une solution idéale, mais elle est généralement efficace. Vous trouverez des options via des outils en ligne de commande taskkillou des scripts PowerShell, voire des outils plus avancés comme le Moniteur de ressources ou Process Explorer. Attention : l’arrêt forcé de services système critiques peut parfois entraîner une instabilité ou un écran bleu de la mort (BSOD).Soyez donc prudent, surtout sur les serveurs de production ou pour les services système essentiels.
Comment réparer un service Windows bloqué
Forcer l’arrêt d’un service bloqué à l’aide de Taskkill
C’est probablement la méthode la plus simple. Il s’agit de trouver l’identifiant du processus (PID) du service et de l’arrêter manuellement. Pour cela, ouvrez une invite de commandes en tant qu’administrateur : faites un clic droit et choisissez « Exécuter en tant qu’administrateur ».
- Trouvez le nom du service dans services.msc ; par exemple, wuauserv pour Windows Update. Vous pouvez également identifier le processus responsable en exécutant :
sc queryex wuauserv
Vous obtiendrez ainsi le PID, par exemple 9186. Ensuite, forcez l’arrêt avec :
taskkill /PID 9186 /F
Dans certaines configurations, vous pourriez avoir de la chance avec le filtre :
taskkill /F /FI "SERVICES eq wuauserv"
Cette commande filtre la liste des processus pour n’afficher que celui qui gère ce service. Attention : l’arrêt brutal d’un processus système critique peut entraîner un plantage du système. Par conséquent, évitez d’arrêter des services essentiels à moins de savoir précisément ce que vous faites.
Forcer l’arrêt d’un service bloqué avec PowerShell
Cette méthode est un peu plus propre, surtout si vous préférez les scripts. PowerShell peut lister tous les services en attente d’arrêt ou de démarrage :
Get-CimInstance -ClassName win32_service | Where-Object { $_. State -eq 'StopPending' }
Ou pour commencer :
Get-CimInstance -ClassName win32_service | Where-Object { $_. State -eq 'StartPending' }
Pour mettre fin à tous les processus associés à ces services bloqués, essayez ce script :
$Services = Get-CimInstance -ClassName win32_service -Filter "State='StopPending'" if ($Services) { foreach ($service in $Services) { try { Stop-Process -Id $service. ProcessId -Force -PassThru } catch { Write-Warning "Couldn’t kill process with ID $($service. ProcessId)" } } } else { Write-Output "No services stuck in stop pending." }
Remarque : Les anciennes versions de PowerShell ( 1.0, 2.0 ) nécessitent `powershell.exe` Get-WmiObjectau lieu de Get-CimInstance`powershell.exe`.De plus, soyez prudent lorsque vous forcez l’exécution de processus : c’est parfois la seule solution, mais cela peut entraîner une instabilité.
Analyser les chaînes d’attente avec le moniteur de ressources
Si l’arrêt du processus ne fonctionne pas ou si vous soupçonnez qu’il est bloqué (par exemple par un autre processus ou un verrou), le Moniteur de ressources peut vous aider. Lancez-le avec la commande resmon.exe`ls`.Accédez à l’ onglet Processeur, repérez le processus bloqué, puis faites un clic droit et sélectionnez Analyser la chaîne d’attente.
Cela indique ce que le processus attend : parfois un verrou de DLL ou un processus dépendant. S’il est en attente svchost.exe, il peut être nécessaire d’analyser la cause de cette attente. Il peut être nécessaire de terminer le processus parent ou le processus dont il attend l’élément, mais évitez de terminer des processus système innocents sans raison valable.
Utiliser Process Explorer pour un contrôle plus approfondi
Parfois, même avec des droits d’administrateur, certains processus refusent de s’arrêter, notamment ceux exécutés sous SYSTEM. Pour contourner ce problème, vous pouvez utiliser Process Explorer. Lancez-le avec les privilèges SYSTEM PSEXEC -s -i ProcExp.exe(via la suite Sysinternals).Localisez ensuite le processus récalcitrant, faites un clic droit, sélectionnez Propriétés, puis accédez à l’ onglet Services. Vous pouvez lui accorder temporairement les autorisations de contrôle total si nécessaire.
Ensuite, essayez de mettre fin au processus ou d’arrêter le service depuis Process Explorer. Parfois, c’est le seul moyen de stopper un processus récalcitrant qui refuse de s’arrêter normalement. Attention : les autorisations ne sont que temporaires, sauf si vous suivez un guide de configuration des autorisations. Il est également utile de noter qu’augmenter la valeur de ServicesPipeTimeout (via le registre) peut empêcher les services de se bloquer au démarrage ou à l’arrêt, surtout lorsqu’ils sont très sollicités ou volumineux.
Conclure
En fin de compte, forcer l’arrêt d’un service bloqué n’est pas toujours idéal, mais dans la plupart des cas, ces méthodes permettent de résoudre le problème sans redémarrage. Attention toutefois : l’arrêt brutal de services critiques peut entraîner des plantages ou des pertes de données si vous n’êtes pas prudent. Il est généralement préférable d’identifier la cause première (comme des problèmes de dépendances ou des processus bloqués), mais en cas d’urgence, ces astuces peuvent s’avérer indispensables.
Résumé
- Utilisez
sc queryexlestaskkillcommandes pour forcer l’arrêt des processus de service. - Les scripts PowerShell peuvent automatiser l’arrêt des services ou processus bloqués.
- Resource Monitor permet d’analyser les chaînes d’attente et les dépendances.
- Process Explorer permet de mettre fin aux processus SYSTÈME récalcitrants avec un contrôle accru.
- Attention : l’arrêt forcé peut entraîner un plantage du système si des services critiques sont affectés.
Dernière remarque
J’espère que l’une de ces astuces permettra de débloquer ce service défaillant. Ce n’est pas la solution idéale, mais c’est parfois la seule option avant de se résoudre à redémarrer le système. Croisons les doigts !