Comment forcer la désinstallation du service windows

j'ai installé un service windows en utilisant installUtil.EXE.

après avoir mis à jour le code, j'ai utilisé installUtil.exe à nouveau pour installer le service sans désinstaller la version originale en premier.

quand j'essaie 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)?

144
demandé sur GEOCHET 2008-10-22 15:09:25

18 réponses

une chose qui m'a surpris dans le passé, c'est que si vous avez le téléspectateur de services en marche alors qui empêche les services d'être complètement supprimé, si proche qu'avant

401
répondu the_mandrill 2009-10-28 15:34:19

Vous n'avez pas à redémarrer votre machine. Démarrez le cmd ou PowerShell en mode surélevé.

sc.exe queryex <SERVICE_NAME>

vous aurez des infos. Un numéro PID apparaîtra.

taskkill /pid <SERVICE_PID> /f

Où /f est de forcer l'arrêt.

Maintenant vous pouvez installer ou lancer votre service.

123
répondu johan 2017-02-10 01:54:14

Eh bien, vous pouvez utiliser SC.EXE pour supprimer n'importe quel service windows avec force si un-install ne supprime pas par n'importe quelle chance.

sc delete <Service_Name>

pour en savoir plus sur "MS Techno Blogging" Supprimer des Services avec force MMC

77
répondu 2009-10-08 21:01:28

je sais que ça ne va pas aider, mais ça pourrait aider quelqu'un dans le futur.

je viens d'avoir le même problème, fermeture et réouverture du Gestionnaire des services enlevé à la fois l'entrée du registre et terminé la désinstallation du service.

auparavant, rafraîchir le Gestionnaire des services n'avait pas aidé.

35
répondu Kennifer 2010-11-11 16:05:13
sc delete sericeName

il suffit de s'assurer que le service est arrêté avant de faire cela. J'ai vu ce travail la plupart du temps. Il y a des fois où j'ai vu windows coincé sur quelque chose et il insiste sur un redémarrage.

9
répondu Aaron Weiker 2008-10-24 03:51:26

Malheureusement, vous devez redémarrer le serveur. Cela devrait supprimer le service" supprimé".

4
répondu seanyboy 2008-10-22 11:16:38

fermer la fenêtre cmd et services Si ouverte, puis recommencer cmd en cliquant avec le bouton droit de la souris et en sélectionnant Exécuter en tant qu'administrateur. Si sc delete sericeName ne fonctionne pas ou quoi que ce soit ne fonctionnent 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

4
répondu incomplete 2013-02-12 09:45:48

juste au cas où cette réponse AIDE quelqu'un: comme trouvé ici , vous pourriez vous épargner beaucoup de problèmes d'exécution Sysinternals Autoruns en tant qu'administrateur. Allez à l'onglet "Services" et supprimez votre service.

Il a fait le tour pour moi sur une machine où je n'ai pas l'autorisation de modifier le registre.

3
répondu Tan 2017-05-23 12:10:45

le suivant fonctionnera sans redémarrer la machine:

  1. Rechercher dans le Registre \ HKEY_LOCAL_MACHINE < votre nom de Service > (à la fois les clés et les valeurs)
  2. mettre "Legacy" valeur à 0
2
répondu Dmitry 2012-03-28 05:59:05

avez-vous essayé d'arrêter le service avant d'appeler uninstall? J'ai eu ce problème de façon aléatoire. Parfois, je pourrais l'enlever sans redémarrer. À mon avis, cela a à voir avec le service toujours en cours

1
répondu faulty 2008-10-24 03:30:25

je suis en retard, mais je voudrais ajouter une alternative, qui peut sembler étrange, mais je n'ai pas vu une autre façon:

comme j'installe Mes Services Windows dans un processus CI chaque nuit, j'avais besoin de quelque chose qui fonctionne tout le temps et est complètement automatisé. Pour une raison quelconque, les services ont toujours été 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 de fournée de réinstallation pour s'assurer que le service est vraiment supprimé (version simplifiée):

REM Stop the service first
net stop My-Socket-Server

REM Same as installutil.exe, just implemented in the service
My.Socket.Server.exe /u

:loop1
    REM Easy way to wait for 5 seconds
    ping 192.0.2.2 -n 1 -w 5000 > nul
    sc delete My-Socket-Server
    echo %date% %time%: Trying to delete service.
    if errorlevel 1072 goto :loop1

REM Just for output purposes, typically I get that the service does not exist
sc query My-Socket-Server

REM Installing the new service, same as installutil.exe but in code
My.Socket.Server.exe /i

REM Start the new service
net start My-Socket-Server

Ce que je peux voir, c'est que le service est marqué pour suppression pendant environ 5 minutes (!) jusqu'à ce qu'il se passe enfin par. Enfin, je n'ai plus besoin d'interventions manuelles. Je vais étendre le script dans le futur de sorte que quelque chose arrive après un certain temps (par exemple notification après 30 minutes).

1
répondu marco 2014-02-24 09:25:36

rafraîchir la liste des services m'a toujours aidé. Si la fenêtre des services est ouverte, elle conservera une certaine mémoire de celle-ci existant pour une raison quelconque. F5 et je suis de réinstaller à nouveau!

0
répondu Jer 2009-10-28 15:26:39

s'assure également qu'il n'y a aucune instance de l'exécutable encore actif (peut-être une instance qui aurait pu être en cours d'exécution, pour quelque raison que ce soit, indépendamment du service).

j'étais en train d'ouvrir et de fermer MMC et de chercher les PID à tuer - mais en regardant dans l'Explorateur de processus il y avait un couple de processus existants courant à partir d'un lot programmé oublié. Tuer. Le travail est accompli.

0
répondu Unsliced 2013-03-06 11:03:29

il y a beaucoup de questions de forum dans ce sujet.

j'ai trouvé la réponse dans l'api windows. Vous n'avez pas besoin de redémarrer l'ordinateur après la désinstallation du service. Vous devez appeler:

BOOL WINAPI CloseServiceHandle(
  SC_HANDLE hSCObject
);

qui ferme la poignée du service. Sur windows 7, il a résolu mon problème. Je fais:

  • arrêter le service
  • poignée fermée
  • désinstaller le service
  • attendre 3 sec
  • copier le nouveau fichier exe dans le répertoire
  • installer le service
  • démarrer le service
  • poignée fermée
0
répondu Gabor Balazs 2013-05-23 16:14:35

vous pouvez supprimer manuellement la clé de registre de votre service, situé à HKLM\SYSTEM\CurrentControlSet\Services , après que vous ne verrez pas le service dans le gestionnaire de contrôle de service (besoin de rafraîchir ou de rouvrir pour voir le changement), et vous pouvez réinstaller le service comme d'habitude.

0
répondu Fernando Gonzalez Sanchez 2016-11-15 21:44:38

j'utilise la PowerShell suivante bricolée à partir de quelques endroits pour notre pieuvre déployer des instances lorsque TopShelf foire ou un service échoue pour une autre raison.

$ServiceName = 'MyNaughtyService'
$ServiceName | Stop-Service -ErrorAction SilentlyContinue
# We tried nicely, now KILL!!!
$ServiceNamePID = Get-Service | Where { $_.Name -eq $ServiceName} # If it was hung($_.Status -eq 'StopPending' -or $_.Status -eq 'Stopping') -and
$ServicePID = (Get-WmiObject Win32_Service | Where {$_.Name -eq $ServiceNamePID.Name}).ProcessID
Stop-Process $ServicePID -Force
0
répondu dragon788 2017-02-10 00:31:07

cela a fonctionné pour moi

$a = Get-WmiObject Win32_Service | Where-Object {$_.Name -eq 'psexesvc'}
$a.Delete()
0
répondu expirat001 2017-02-19 00:41:37

si vous ne pouvez pas arrêter le service dans Services , vous pouvez arrêter votre Windows Service exe dans Gestionnaire de tâches . Après cela, vous pouvez supprimer le service.

0
répondu Oguzhan KIRCALI 2017-10-17 07:02:21