J'essaie de supprimer un service Windows avec sc delete <service name>
et rencontre l'erreur suivante:
[SC] DeleteService FAILED 1072:
Le service spécifié a été marqué pour suppression.
Ce que j'ai déjà fait:
Arrêté le service, évidemment. Le
sc queryex "<service name>"
donne le résultat suivant:SERVICE_NAME: Stub service TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED WIN32_EXIT_CODE : 1067 (0x42b) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 0 FLAGS :
Vérification de la fermeture de Microsoft Management Console (
taskkill /F /IM mmc.exe
),-
En raison de cette suppression,
services.msc
affiche toujours le service (avec un nom, mais pas d'état ou de type de démarrage), mais la description est «<Impossible de lire la description. Code d'erreur: 2> ”. Lorsque vous essayez d'afficher les propriétés, "Le système ne peut pas trouver le fichier spécifié." s'affiche cinq fois.
Le problème persiste.
Quelle est la prochaine étape?
la source
Réponses:
Il peut y avoir plusieurs causes qui conduisent au blocage du service «marqué pour suppression».
L'Explorateur de processus de SysInternals est ouvert . La fermeture devrait entraîner la suppression automatique du service.
Le Gestionnaire des tâches est ouvert .
La console Microsoft Management Console (MMC) est ouverte . Pour vous assurer que toutes les instances sont fermées, exécutez
taskkill /F /IM mmc.exe
.La console des services est ouverte . Ceci est identique au point précédent, car la console des services est hébergée par MMC.
L'Observateur d'événements est ouvert . Encore une fois, c'est la même chose que le troisième point.
La clé HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ {nom du service} existe .
Quelqu'un d'autre est connecté au serveur et l'une des applications susmentionnées est ouverte.
Une instance de Visual Studio utilisée pour déboguer le service est ouverte.
la source
Cela peut également être dû au fait que la console des services est ouverte. Windows ne supprimera pas réellement le service tant qu'il ne sera pas fermé.
la source
J'ai eu le même problème, j'ai finalement décidé de tuer le processus de service.
pour cela, essayez les étapes ci-dessous:
obtenir l'identifiant de processus du service avec
sc queryex <service name>
tuer le processus avec
taskkill /F /PID <Service PID>
la source
Dans mon cas, cela a fonctionné après la fermeture du
Services
. Vérifiez si leServices.msc
est ouvert, si oui, fermez-le et vérifiez que tout processus de service se trouve dansTask Manager
.la source
Cela signifie que le service est toujours répertorié comme désactivé dans services.msc. Fermez simplement le services.msc et rouvrez-le en tant qu'administrateur ... Le service ne sera pas répertorié. Maintenant, installez le service à l'aide de la commande,
installutil "chemin de service"
la source
La suppression des clés de registre comme suggéré ci-dessus a bloqué mon service dans l'état d'arrêt. La procédure suivante a fonctionné pour moi:
ouvrir le gestionnaire de tâches> sélectionner l'onglet des services> sélectionner le service> cliquer avec le bouton droit et sélectionner "aller au processus"> cliquer avec le bouton droit sur le processus et sélectionner Terminer le processus
Le service devrait disparaître après cela
la source
J'ai découvert une dernière chose à vérifier - regardez dans le Gestionnaire des tâches - si d'autres utilisateurs sont connectés à cette case, même s'ils sont «déconnectés», vous devez les déconnecter pour que le service soit finalement supprimé.
la source
Il semble que sur les versions de Windows ultérieures à Windows 7 (non vérifiées, mais par expérience récente avec Windows Server 2012 R2), le Gestionnaire de contrôle des services (SCM) est plus strict.
Alors que sur Windows 7, il lance simplement un autre processus, il vérifie maintenant si le processus de service est toujours là et peut retourner ERROR_SERVICE_MARKED_FOR_DELETE (1072) pour tout appel ultérieur à CreateService / DeleteService même si le service semble être arrêté.
Je parle du code API Windows ici, mais je veux décrire clairement ce qui se passe, donc cette séquence peut conduire à l'erreur mentionnée:
La raison pour laquelle un processus de service existe toujours après avoir déjà signalé son état SERVICE_STOPPED n'est pas surprenante. C'est un processus régulier, dont le thread principal est «bloqué» dans son appel à l'
StartServiceCtrlDispatcher
API, il réagit donc d'abord à une action de contrôle d'arrêt, mais doit ensuite exécuter sa séquence de code restante.Il est regrettable que le SCM / OS ne gère pas cela correctement pour nous. Une solution programmatique est un peu simple et précise: obtenez le descripteur de processus de l'exécutable de service avant d'arrêter le service, puis attendez que ce descripteur soit signalé.
Si vous abordez le problème du point de vue de l'administration système, la solution consiste également à attendre que le processus de service disparaisse complètement.
la source
C'est ce qui a fonctionné pour moi: - J'ai rencontré le même problème: mon service était coincé dans "marqué pour suppression". - J'ai ouvert services.msc Mon service s'est affiché comme étant en cours d'exécution, bien qu'il ait déjà été désinstallé. - J'ai cliqué sur Arrêter la réception d'un message d'erreur, indiquant que le service n'est pas en état de recevoir des messages de contrôle. Néanmoins, le service a été interrompu. - Services fermés.msc. - Services.msc rouverts. - Le service était parti (n'apparaissant plus dans la liste des services).
(L'environnement était Windows 7.)
la source
Dans mon cas, j'exécute
taskkill /f /im dongleserver.exe
, oùdongleserver.exe
est le fichier exe de mon programme.Ensuite, je peux déjà réinstaller mon programme.
la source
Dans mon cas, cela a été causé par une exception non gérée lors de la création de la source eventLog. Utilisez try catch pour identifier la cause.
la source
La fermeture de chaque fenêtre actuellement ouverte suivie de l'exécution de la commande suivante a résolu le problème pour moi:
la source
La fermeture de la console des services comme suggéré par quelques-unes des réponses ici m'a permis de supprimer le service. Dans mon scénario, ce n'était qu'un correctif à court terme, car toutes les réinstallations et suppressions du service ultérieur m'obligeraient à prendre ces mesures supplémentaires. En examinant mon fichier web.config, il a été découvert qu'il y avait une erreur qui, une fois corrigée, m'a permis de supprimer facilement le service sans la fermeture supplémentaire de l'étape de la console des services.
la source
Cela fonctionne pour moi.
L'arborescence de processus de fin mettra fin au processus et à tous les processus créés par le processus.
Ensuite, vous pouvez réinstaller le service.
la source
Dans mon cas, le nom du service était 'Monitor' qui est également utilisé par un service Windows appelé 'Monitor', lorsque j'ai essayé de mettre à jour mes services, j'ai essayé de les désinstaller, le programme d'installation a essayé de supprimer le service Windows 'Monitor' qu'il n'a pas pu, et l'installation a toujours été annulée.
J'ai fini par renommer mon service en quelque chose d'autre
la source
Si les étapes fournies par @MainMa n'ont pas fonctionné, suivez les étapes suivantes
Étape 1 Essayez de tuer le processus à partir du gestionnaire de tâches Windows ou d'utiliser taskkill / F / PID. Vous pouvez trouver le pid du processus par la commande 'sc queryex'. Essayez l'étape suivante si vous ne pouvez toujours pas désinstaller.
Étape 2 Si ci-dessus
Exécutez Autoruns pour Windows Recherchez le service par nom et supprimez les résultats.
la source
La principale raison de l'erreur est que le processus n'est pas arrêté. pour le résoudre, lancez le gestionnaire de tâches, accédez aux services et voyez si vous pouvez toujours voir votre service, puis passez au processus de ce service et terminez le processus. Que le problème sera résolu complètement.
la source
J'avais ce problème lorsque j'utilisais Application Verifier pour vérifier mon service Win. Même après avoir fermé App Ver, mon service n'a pas pu être supprimé. Seule la suppression du service d'App Ver a résolu le problème et le service a été supprimé immédiatement. Il semble qu'un processus utilise toujours votre service après que vous ayez essayé d'en supprimer un.
la source
étapes à suivre:
étape 1 l'emplacement C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
étape 2 exécuter la commande: installutil / u chemin-complet / nomservice.exe
étape 3 fermez le panneau de services et rouvrez-le
étape-4 exécuter la commande: installutil full-path / servicename.exe
la source
La suppression du service échoue très probablement car
jeter une erreur lors de l'arrêt d'un service. envelopper les choses dans une prise d'essai empêchera la marque d'erreur de suppression
}
la source
Parfois, cela peut se produire lors de la suppression du service via le script de session à distance PowerShell, en particulier lorsque vous essayez de supprimer le service plusieurs fois. Dans ce cas, essayez de recréer une session avant la suppression:
la source