Comment résoudre l'erreur "Le service spécifié a été marqué pour être supprimé" ?
J'essaye de supprimer un service Windows avec sc delete <service name>
, et je rencontre l'erreur suivante :
[SC] DeleteService FAILED 1072 :
Le service spécifié a été marqué pour être supprimé.
Ce que j'ai déjà fait :
-
J'ai arrêté le service, évidemment. La commande
sc queryex "<service name>"
donne le résultat suivant :SERVICE_NAME : Stub service TYPE : 10 WIN32_OWN_PROCESS ÉTAT : 1 ARRÊTÉ WIN32_EXIT_CODE : 1067 (0x42b) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 0 FLAGS :
-
S'assurer que Microsoft Management Console est fermée (
taskkill /F /IM mmc.exe
), -
En raison de cette suppression,
services.msc
montre toujours le service (avec un nom, mais pas de statut ou de type de démarrage), mais la description est "<Failed to Read Description. Code d'erreur : 2 > ;". Lorsque vous essayez d'afficher les propriétés, le message "The system cannot find the file specified." s'affiche cinq fois.
Le problème persiste.
Quelle est la prochaine étape ?
Il peut y avoir plusieurs causes qui conduisent à ce que le service soit bloqué dans "marqué pour suppression".
[SysInternals' ; Process Explorer est ouvert] (http://blog.cyotec.com/2011/05/specified-service-has-been-marked-for.html). Sa fermeture devrait entraîner la suppression automatique du service.
[Le gestionnaire des tâches est ouvert] (https://stackoverflow.com/questions/20561990/how-to-solve-the-specified-service-has-been-marked-for-deletion-error/21310096#comment32672750_20565337).
[La console de gestion Microsoft (MMC) est ouverte] (https://stackoverflow.com/a/8529760/240613). Pour vous assurer que toutes les instances sont fermées, exécutez
taskkill /F /IM mmc.exe
.[La console des services est ouverte] (https://stackoverflow.com/a/21310096/240613). C'est la même chose que le point précédent, puisque la console de services est hébergée par MMC.
La clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{nom du service} existe.
Une autre personne est connectée au serveur et a ouvert l'une des applications mentionnées précédemment.
Une instance de Visual Studio utilisée pour déboguer le service est ouverte.
Cela peut également être dû au fait de laisser la console des services ouverte. Windows ne supprime pas réellement le service tant qu'il n'est pas fermé.
Dans mon cas, il a été causé par une exception non gérée lors de la création de la source du journal des événements. Utilisez try catch pour identifier la cause.