Comment désinstaller un service Windows si les fichiers n'existent plus?

570

Comment désinstaller un service Windows .NET, si les fichiers de service n'existent plus?

J'ai installé un service Windows .NET à l'aide d'InstallUtil. J'ai depuis supprimé les fichiers mais j'ai oublié de lancer

 InstallUtil /u

première. Le service est donc toujours répertorié dans la console MMC Services.

Dois-je aller dans le registre? Ou existe-t-il une meilleure façon?

Thomas Jespersen
la source
3
Delserv
Tom Kidd
2
Avez-vous également interrompu le service en premier? (-> net stop yourservice)
Jos
Un fil très proche ici .
RBT
ce site m'aide et j'espère qu'il vous aidera dans ce problème howtogeek.com/howto/windows-vista/…
Ahmed Elbendary

Réponses:

1130

Vous avez au moins trois options. Je les ai présentées par ordre de préférence d'utilisation.

Méthode 1 - Vous pouvez utiliser l' outil SC (Sc.exe) inclus dans le Kit de ressources. (inclus avec Windows 7/8)

Ouvrez une invite de commande et entrez

sc delete <service-name>

L'extrait d'aide de l'outil suit:

DESCRIPTION:
        SC is a command line program used for communicating with the
        NT Service Controller and services.

delete----------Deletes a service (from the registry).

Méthode 2 - utilisez delserv

Téléchargez et utilisez l'utilitaire de ligne de commande delserv. Il s'agit d'un outil hérité développé pour Windows 2000. Dans les boîtes Windows XP actuelles, il a été remplacé par sc décrit dans la méthode 1.

Méthode 3 - supprimez manuellement les entrées de registre (notez que cela se retourne dans Windows 7/8)

Les services Windows sont enregistrés sous la clé de registre suivante.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Recherchez la sous-clé avec le nom du service sous la clé référencée et supprimez-la. (et vous devrez peut-être redémarrer pour supprimer complètement le service de la liste des services)

Jorge Ferreira
la source
23
La méthode 3 semble se retourner contre Windows 7.
rmiesen
29
À la méthode 1, vous pouvez rencontrer l'erreur «Le service spécifié n'existe pas en tant que service installé», bien que vous voyez le service sur la console MMC !!! C'est parce que le nom que vous voyez est DisplayName. Vous pouvez rechercher le nom de service réel dans l'arborescence HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services et le transmettre en tant que nom de service.
denispyr
9
La méthode 3 s'est également retournée contre moi sur Windows 7. Le service est maintenant là avec la description<Failed to Read Description. Error Code: 2>
Zugwalt
27
notez soyez prudent si vous utilisez powershell avec sc - il remplace l'application avec sa cmdlet set-content et si vous exécutez sc delete blah, il échoue silencieusement
JonnyRaa
10
REMARQUE: vous devez redémarrer votre ordinateur après avoir effectué la méthode 3! Ensuite, regardez la liste des services; c'est probablement parti maintenant. S'il est toujours dans la liste, effectuez simplement la méthode 1 pour le supprimer de cette liste.
East of Nowhere
170

À partir de l'invite de commandes, utilisez l'utilitaire Windows "sc.exe". Vous exécuterez quelque chose comme ceci:

sc delete <service-name>
Dean Hill
la source
21
S'il y a un espace dans le nom du service, entourez-le entre guillemets.
geoffc
2
Pourquoi est-ce que j'obtiens [SC] OpenService a échoué 5: l'accès est refusé.
Adrian Enriquez
11
@AdrianEnriquez, exécutant cmd.exe en tant qu'administrateur a corrigé cela pour moi.
foldlettuce
3
Dans Windows 8 après avoir utilisé la commande, le service apparaît avec l'état désactivé dans la liste MMC. Un redémarrage éliminera le service de la liste.
Ryan
1
Existe-t-il un moyen d'élever les privilèges pour cela? J'obtiens toujours "L'accès est refusé" après avoir tapé la commande ci-dessus
Nick
27

Remarques sur l'utilisation de "sc delete" dans Windows 8:

1) Ouvrez une fenêtre CMD avec des privilèges élevés. [Windows Key-X pour faire apparaître un menu avec l'option; sélectionnez "Invite de commandes (Admin)".]
2) Utilisez le nom entre parenthèses dans la liste des services [par exemple, j'ai utilisé "sc delete gupdate" lorsque, dans les services, il était indiqué "Google Update (gupdate)"]]

Michael
la source
22

Certaines personnes mentionnent sc deletecomme réponse. C'est comme ça que je l'ai fait, mais il m'a fallu un certain temps pour trouver le <service-name>paramètre.

La commande sc query type= service(notez que c'est très particulier avec le formatage, l'espace avant "service" est nécessaire) affichera une liste des services Windows installés, avec leur nom qualifié à utiliser avec la sc delete <service-name>commande.

La liste est assez longue, vous pouvez donc envisager de rediriger la sortie vers un fichier texte (c'est-à-dire >> C:\test.txt), puis de la parcourir.

Le SERVICE_NAMEest celui à utiliser avec la sc delete <service-name>commande.

Robin French
la source
2
Voir mon commentaire sur la réponse acceptée. Le nom du service peut être déterminé rapidement en consultant la feuille Propriétés du service dans le panneau Services.
donperk
2
C'était totalement inutile: s'ils apparaissent dans la liste des services, vous pouvez simplement ouvrir les propriétés des services que vous souhaitez supprimer de la liste des services, dans la liste des services, et il vous montrera le nom du service. Le "nom du service" répertorié dans les propriétés contient également le même nom de service. :)
neminem
2
Oui, je sais que vous pouvez obtenir le nom par d'autres moyens. J'ai ajouté cela parce que j'avais du mal à déterminer lequel des noms utiliser dans la commande. J'avais vu le nom répertorié dans les propriétés du service, mais je ne savais pas à l'époque que c'était le nom à utiliser dans la commande. L'utilisation de la ligne de commande était un bon moyen pour moi de vider tous les services installés, y compris le <nom_service> à utiliser pour les supprimer. J'avais quelques services qui en avaient besoin, il était donc plus facile pour moi de vider la liste entière dans un fichier afin de pouvoir y accéder sans avoir à la rechercher dans le composant logiciel enfichable Services.
Robin French
Vous pouvez simplement l'exécuter sc querycomme par défaut type= service.
Ian Kemp
11

Supprimer le service Windows via le registre

Il est très facile de supprimer un service du registre si vous connaissez le bon chemin. Voici comment j'ai fait ça:

  1. Exécutez Regedit ou Regedt32

  2. Accédez à l'entrée de registre "HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services"

  3. Recherchez le service que vous souhaitez supprimer et supprimez-le. Vous pouvez consulter les clés pour savoir quels fichiers le service utilisait et les supprimer également (si nécessaire).

Supprimer le service Windows via la fenêtre de commande

Alternativement, vous pouvez également utiliser l'invite de commande et supprimer un service à l'aide de la commande suivante:

sc supprimer

Vous pouvez également créer un service à l'aide de la commande suivante

sc create "MorganTechService" binpath = "C: \ Program Files \ MorganTechSPace \ myservice.exe"

Remarque: Vous devrez peut-être redémarrer le système pour obtenir la liste mise à jour dans le gestionnaire de services.

kombsh
la source
9

Si vous souhaitez utiliser un outil pour cela, vous pouvez utiliser Process Hacker

Formulaire de création du service:

Service de création de processus Hacker

Menu contextuel sur un service pour le supprimer:

Service de suppression de hackers de processus

Je trouve Process Hacker un outil plus pratique pour gérer les processus et services Windows que Taskmgr.exe de Windows. Surtout sur Windows XP, où vous ne pouvez pas accéder aux services à partir du gestionnaire de tâches.

Mike de Klerk
la source
4

J'ai dû réinstaller mon service tomcat, ce qui signifiait d'abord le supprimer. Cela a fonctionné pour moi:

Start a command prompt window using run as administrator

sc query type= service >t.txt

(éditez le fichier t.txt, recherchez dans la liste et trouvez le service tomcat. Il s'appelle Tomcat7)

sc delete Tomcat7

TOUTEFOIS, la commande de requête n'a pas fonctionné la première fois, car le service tomcat n'était pas en cours d'exécution. Il semble ne répertorier que les services en cours d'exécution. J'ai dû démarrer le service et réexécuter la commande de requête.

user1208639
la source
Si vous souhaitez voir les services arrêtés, utilisez le stateparamètre.
Harry Johnston
3

Si les fichiers Service .InstallLog et .InstallState d'origine sont toujours dans le dossier, vous pouvez essayer de réinstaller l'exécutable pour remplacer les fichiers, puis utiliser InstallUtil / u, puis désinstaller le programme. C'est un peu compliqué, mais cela a fonctionné dans un cas particulier pour moi.

ja928
la source
3

Vous pouvez essayer d'exécuter Autoruns , ce qui vous éviterait de devoir modifier le registre à la main. Ceci est particulièrement utile lorsque vous ne disposez pas des autorisations nécessaires.

bronzer
la source
0

1ère étape: accédez au répertoire où votre service est présent

Commande: cd c: \ xxx \ yyy \ service

2e étape: entrez la commande ci-dessous

Commande: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe service.exe \ u

Ici service.exe est votre exe de service et \ u désinstallera le service. vous verrez le message "La désinstallation est terminée".

Si vous voulez installer un service, supprimez \ u dans la commande ci-dessus qui installera votre service

Sree
la source
3
Le PO a clairement indiqué que les fichiers originaux avaient été supprimés.
AFract
0

Nous avons découvert que même si vous exécutez sc_delete, il peut rester une entrée dans le Registre pour votre service, de sorte que la réinstallation du service entraîne un ensemble corrompu d'entrées de Registre (elles ne correspondent pas). Ce que nous avons fait était de regeditsupprimer cette entrée restante à la main.

Remarque: ShipmunkService apparaît toujours après sc_delete!

Vous pouvez ensuite réinstaller et votre service fonctionnera correctement. Bonne chance à tous et que la force soit avec vous.

barclay
la source
0

Vous pouvez désinstaller votre service Windows par invite de commande également écrire simplement ce morceau de commande

cd\                                                                   

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319(or version in which you developed your service)                                           

installutil c:\\xxx.exe(physical path of your service) -d
Amarjit Singh Chaudhary
la source
0

-Windows+r cmd ouvert.

-sc YourSeviceName ce code supprime votre service.

-Uninstal "YourService Path" ce code désinstalle votre service.

Ayse Özbek
la source