177 votes

Comment désinstaller un service Windows lorsqu'il n'y a plus d'exécutable pour celui-ci sur le système ?

Comment désinstaller un service Windows lorsqu'il n'y a plus d'exécutable pour celui-ci sur le système ? Je ne peux pas exécuter installutil -u puisqu'il n'y a plus d'exécutable sur le système. Je peux toujours voir une entrée pour le service dans la console Services.

La raison de cet état est probablement due à un problème dans le paquet msi qui ne supprime pas le service correctement, mais comment puis-je le réparer une fois que le service est dans cet état ?

1 votes

342voto

Treb Points 11153

Vous devriez pouvoir le désinstaller en utilisant sc.exe (je pense qu'il est inclus dans le kit de ressources Windows) en exécutant ce qui suit dans une invite de commande "administrateur" :

sc.exe delete <service name>

donde <service name> est le nom du service lui-même tel qu'il apparaît dans la console de gestion des services, et non de l'exe.

Vous pouvez trouver sc.exe dans le dossier Système et il a besoin de privilèges d'administration pour fonctionner. Plus d'informations dans cet article de Microsoft KB .

Alternativement, vous pouvez appeler directement le DeleteService() api. Cette méthode est un peu plus complexe, car vous devez obtenir un accès au gestionnaire de contrôle des services par le biais de l'application OpenSCManager() et ainsi de suite, mais d'un autre côté, cela vous donne plus de contrôle sur ce qui se passe.

0 votes

Il a fait exactement ce que je voulais et a supprimé le service du registre. Il n'apparaît plus dans la console des services. Merci !

1 votes

J'obtiens "L'accès est refusé." Que faire ensuite ?

6 votes

Juste une note pour ceux qui essaient d'exécuter la commande de la méthode 1 dans PowerShell : sc n'est pas pour communiquer avec le gestionnaire de contrôle des services. C'est une commande Set-Content. Utilisez sc.exe à la place.

25voto

kombsh Points 740

Suppression du service Windows via le registre

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

  1. Exécuter Regedit o Regedt32

  2. Allez dans l'entrée de registre "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services".

  3. Recherchez le service que vous voulez 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 en utilisant la commande suivante :

sc supprimer

Vous pouvez également créer un service en utilisant la commande suivante

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

Remarque : il se peut que vous deviez redémarrer le système pour que la liste soit mise à jour dans le gestionnaire de services.

3 votes

La méthode du registre est-elle sûre ? Le "résultat final" de la méthode du registre est-il le même que le "résultat final" de la méthode de l'enregistrement ? sc delete ?

5 votes

Non, j'ai juste essayé de supprimer un service depuis regedit directement. En conséquence, maintenant l'entrée du service que je voulais supprimer reste dans Service, alors que la Description de celui-ci affiche : "<Failed to Read Description. Error Code : 2>"

11voto

Fredou Points 9553

trouvé ici

Je viens d'essayer sur Windows XP, ça a marché

ordinateur local : sc \\. suppression [nom du service] supprimer

  Deleting services in Windows Server 2003

  We can use sc.exe in the Windows Server 2003 to control services, create services and delete services. Since some people thought they must directly modify the registry to delete a service, I would like to share how to use sc.exe to delete a service without directly modifying the registry so that decreased the possibility for system failures.

  To delete a service: 

  Click “start“ - “run“, and then enter “cmd“ to open Microsoft Command Console.

  Enter command:

  sc servername delete servicename

  For instance, sc \\dc delete myservice

  (Note: In this example, dc is my Domain Controller Server name, which is not the local machine, myservice is the name of the service I want to delete on the DC server.)

  Below is the official help of all sc functions:

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

10voto

Thomas Bratt Points 10738

Ma façon préférée de procéder est d'utiliser Sysinternals Autoruns application. Il suffit de sélectionner le service et de le supprimer.

0 votes

Pourquoi ne pas simplement utiliser sc delete ?

3voto

Samiksha Points 2182

Créez une copie des exécutables du même service et collez-la sur le même chemin que le service existant, puis désinstallez.

0 votes

C'est une bonne suggestion. Si cela ne fonctionne pas, il peut avoir besoin de réinstaller, d'exécuter installutil -u, et ensuite de désinstaller.

0 votes

Devons-nous créer une copie du même exe ou renommer tout autre fichier ?

0 votes

@Samiksha, je pensais qu'il avait dit qu'il ne l'avait pas " une copie des exécutables " ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X