199 votes

Comment forcer la désinstallation d'un service Windows

J'ai installé un service Windows en utilisant installUtil.exe.

Après avoir mis à jour le code, j'ai de nouveau utilisé installUtil.exe pour installer le service sans désinstaller la version originale au préalable.

Lorsque j'essaie maintenant de désinstaller le service, installUtil.exe effectue 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 "service is marked for deletion".

Comment puis-je forcer la suppression (de préférence sans redémarrer le serveur) ?

0 votes

Si le service est suspendu et que la suppression ne fonctionne pas, voir Comment forcer la désinstallation d'un service Windows

1voto

Oguzhan KIRCALI Points 194

Si vous ne pouvez pas arrêter le service dans Servicios Vous pouvez arrêter votre service Windows exe dans la rubrique Gestionnaire de tâches . Ensuite, vous pouvez supprimer le service.

0voto

Jer Points 1

L'actualisation de la liste des services a toujours fonctionné pour moi. Si la fenêtre des services est ouverte, elle gardera un souvenir de son existence pour une raison ou une autre. F5 et je réinstalle à nouveau !

0voto

Unsliced Points 5800

Assurez-vous également qu'il n'y a pas d'instances de l'exécutable encore actives (peut-être une instance qui aurait été exécutée, pour une raison quelconque, indépendamment du service).

J'ouvrais et fermais la MMC et cherchais les PID à tuer - mais en regardant dans l'explorateur de processus, il y avait quelques processus en cours d'exécution à partir d'un lot programmé oublié. Je les ai tués. Le travail est fait.

0voto

Gabor Balazs Points 1

Il existe de nombreuses questions sur ce sujet dans les forums.

J'ai trouvé la réponse dans l'api Windows. Il n'est pas nécessaire de redémarrer l'ordinateur après avoir désinstallé le service. Vous devez appeler :

BOOL WINAPI CloseServiceHandle(
  SC_HANDLE hSCObject
);

Cela ferme la porte du service. Sous Windows 7, cela a résolu mon problème. Je le fais :

  • arrêter le service
  • poignée de fermeture
  • désinstaller le service
  • attendre 3 secondes
  • copier le nouvel exe dans le répertoire
  • installer le service
  • démarrer le service
  • poignée de fermeture

0voto

dragon788 Points 1102

J'utilise la commande PowerShell suivante, qui a été bricolée à partir de plusieurs endroits, pour nos instances Octopus Deploy lorsque TopShelf a des problèmes ou qu'un service ne fonctionne pas 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

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