J'ai installé un service Windows en utilisant installUtil.exe.
Après avoir mis à jour le code, j'ai utilisé à nouveau installUtil.exe pour installer le service sans désinstaller d'abord la version d'origine.
Lorsque j'essaye maintenant de désinstaller le service, installUtil.exe termine la désinstallation avec succès, mais le service apparaît toujours.
Si j'essaie de modifier ses propriétés, je reçois le message «Le service est marqué pour suppression».
Comment puis-je forcer la suppression (de préférence sans redémarrer le serveur)?
Réponses:
Une chose qui m'a surpris dans le passé est que si vous avez la visionneuse de services en cours d'exécution, cela empêche les services d'être complètement supprimés, alors fermez-le au préalable
la source
Vous n'avez pas besoin de redémarrer votre machine. Démarrez cmd ou PowerShell en mode élevé.
Ensuite, vous obtiendrez des informations. Un numéro PID s'affiche.
Où / f est de forcer l'arrêt.
Vous pouvez maintenant installer ou lancer votre service.
la source
sc.exe queryex <SERVICENAME>
. Parce quesc
c'est aussi un alias pourSet-Content
, il échouera SILENCIEUSEMENT lorsque vous l'utiliserez.eh bien, vous pouvez utiliser SC.EXE pour supprimer de force n'importe quel service Windows si la désinstallation ne supprime pas par hasard.
En savoir plus sur "MS Techno Blogging" Suppression forcée des services des services MMC
la source
sc delete
signalera également "le service est marqué pour suppression" s'il y a un handle ouvert au service.Je sais que cela n'aidera pas, mais cela pourrait aider quelqu'un à l'avenir.
J'ai juste eu le même problème, la fermeture et la réouverture du gestionnaire de services ont supprimé à la fois l'entrée du registre et terminé la désinstallation du service.
Avant cela, rafraîchir le gestionnaire des services n'avait pas aidé.
la source
Assurez-vous simplement que le service est arrêté avant de faire cela. J'ai vu ce travail la plupart du temps. Il y a des moments où j'ai vu des fenêtres se coincer sur quelque chose et cela insiste sur un redémarrage.
la source
Fermez la fenêtre cmd et services si elle est ouverte, puis redémarrez cmd en cliquant avec le bouton droit et en sélectionnant Exécuter en tant qu'administrateur. Si
sc delete sericeName
cela ne fonctionne pas ou si quelque chose ne fonctionne pas.http://weblogs.asp.net/avnerk/archive/2007/09/05/windows-services-services-msc-and-the-quot-this-service-is-marked-for-deletion-quot-error. aspx
la source
Malheureusement, vous devez redémarrer le serveur. Cela devrait supprimer le service "supprimé".
la source
Juste au cas où cette réponse aiderait quelqu'un: comme trouvé ici , vous pourriez vous éviter beaucoup de problèmes pour exécuter Sysinternals Autoruns tant qu'administrateur. Allez simplement dans l'onglet "Services" et supprimez votre service.
Cela a fait l'affaire pour moi sur une machine sur laquelle je n'avais aucune autorisation pour modifier le registre.
la source
Vous pouvez supprimer manuellement la clé de registre de votre service, située à l'adresse
HKLM\SYSTEM\CurrentControlSet\Services
, après cela, vous ne verrez pas le service dans le gestionnaire de contrôle de service (vous devez actualiser ou rouvrir pour voir la modification), et vous pouvez réinstaller le service comme d'habitude.la source
Ce qui suit fonctionnera sans redémarrer la machine:
la source
Avez-vous essayé d'arrêter le service avant d'appeler la désinstallation? J'ai eu ce problème au hasard. Parfois, je pourrais le supprimer sans redémarrer. Je suppose que cela a à voir avec le service toujours en cours d'exécution
la source
Je suis en retard, mais j'aimerais ajouter une alternative, qui peut paraître étrange, mais je n'ai pas vu d'autre moyen:
Comme j'installe mes services Windows dans un processus CI chaque nuit, j'avais besoin de quelque chose qui fonctionne tout le temps et qui est complètement automatisé. Pour une raison quelconque, les services étaient toujours marqués pour suppression pendant une longue période (5 minutes ou plus) après leur désinstallation. Par conséquent, j'ai étendu le script batch de réinstallation pour m'assurer que le service est vraiment supprimé (version simplifiée):
Ce que je peux voir, c'est que le service est marqué pour suppression pendant environ 5 minutes (!) Jusqu'à ce qu'il passe enfin. Enfin, je n'ai plus besoin d'interventions manuelles. Je vais étendre le script à l'avenir pour que quelque chose se passe après un certain temps (par exemple, notification après 30 minutes).
la source
Cela a fonctionné pour moi
la source
ReturnValue : 16
, alors la commande a échoué avec " Ce service est en cours de suppression du système ". Liste complète des ReturnValues de Microsoft iciSi vous ne pouvez pas arrêter le service dans Services , vous pouvez arrêter votre exe de service Windows dans le Gestionnaire des tâches . Après cela, vous pouvez supprimer le service.
la source
L'actualisation de la liste des services l'a toujours fait pour moi. Si la fenêtre des services est ouverte, elle conservera une partie de la mémoire existante pour une raison quelconque. F5 et je réinstalle à nouveau!
la source
Assurez-vous également qu'aucune instance de l'exécutable n'est toujours active (peut-être une instance qui aurait pu être en cours d'exécution, pour une raison quelconque, indépendamment du service).
J'ouvrais et fermais MMC et cherchais les PID à tuer - mais en regardant dans l'explorateur de processus, il y avait quelques processus existants exécutés à partir d'un lot planifié oublié. Les tués. Travail accompli.
la source
Il y a beaucoup de questions de forum sur ce sujet.
J'ai trouvé la réponse dans l'API de Windows. Vous n'avez pas besoin de redémarrer l'ordinateur après avoir désinstallé le service. Vous devez appeler:
Cela ferme la poignée du service. Sur Windows 7, cela a résolu mon problème. Je fais:
la source
J'utilise le PowerShell suivant bricolé à partir de quelques endroits pour nos instances Octopus Deploy lorsque TopShelf se trompe ou qu'un service échoue pour une autre raison.
la source
Il convient également de noter que ceci:
ne fonctionne pas dans PowerShell, sc est un alias pour l'applet de commande Set-Content dans PowerShell. Tu as besoin de faire:
la source