web-dev-qa-db-fra.com

Arrêt d'un service Windows lorsque l'option d'arrêt est grisée

J'ai créé un service Windows et dans le service dans le panneau de configuration -> Outils d'administration -> Services, son statut est en cours de démarrage.

Je souhaite arrêter ce service, mais l'option d'arrêt est grisée. Comment puis-je démarrer/arrêter le service?

Chaque fois que je redémarre, il s’arrête et je peux le supprimer.

72
DotnetSparrow

Si vous exécutez la commande:

sc queryex <service name>

où est le nom du service, pas le nom d'affichage (spouleur, pas spouleur d'impression), à l'invite cmd, il renverra le PID du processus sous lequel le service est exécuté. Prenez ce PID et courez

taskkill /F /PID <Service PID>

pour forcer le PID à s’arrêter. Parfois, si le processus se bloque lors de l'arrêt de l'interface graphique, vous ne pouvez rien faire avec le service.

137
DrPppr242

Vous pouvez le faire en une seule ligne (utile pour les environnements ci-dessus):

taskkill /fi "Services eq SERVICE_NAME" /F

Filtre -> Services -> ServiceName est égal à SERVICE_NAMES -> Force

Source: https://technet.Microsoft.com/en-us/library/bb491009.aspx

21
totev

Utilisez le gestionnaire de tâches pour trouver le service et le tuer à partir de là en utilisant Tâche finale. Fait toujours le tour pour moi.

Si vous avez créé le service vous-même, envisagez de supprimer les opérations à exécution longue de l'événement OnStart. C'est généralement ce qui rend le service non réactif.

6
Varun Rathore

Si l'option d'arrêt est grisée, votre service n'a pas indiqué qu'il acceptait SERVICE_ACCEPT_STOP quand il a appelé pour la dernière fois SetServiceStatus . Si vous utilisez .NET, vous devez définir la propriété CanStop dans ServiceBase.

Bien sûr, si vous acceptez les demandes d'arrêt, vous feriez mieux de vous assurer que votre service peut traiter ces demandes en toute sécurité, surtout si votre service continue de progresser grâce à son code de démarrage.

6
Aaron Klotz

Comme Aaron l’a mentionné plus haut, certains services n’acceptent pas SERVICE_ACCEPT_STOP messages, au moment où il a été développé. Et c'est codé en dur dans l'exécutable. Période. Un workaroud serait de ne pas le démarrer, et comme vous ne pouvez pas modifier ses propriétés, effectuez de force les opérations suivantes:

  1. Démarrez en mode sans échec (les utilisateurs de Windows 10 pourraient avoir besoin de msconfig> démarrage> démarrage sans échec)
  2. Regedit dans HKLM> Système> ControlSet001> Services
  3. Localisez votre entrée de service
  4. Changer la clé 'Start' en 3 (démarrage manuel) ou 4 (désactivé)

Si vous ne pouvez pas modifier l'entrée, cliquez avec le bouton droit de la souris sur le nom de votre service dans le volet de gauche, sélectionnez "Autorisations", vérifiez que "Tout le monde" dispose d'un accès complet, puis relancez l'étape 4.

N'oubliez pas de désactiver à nouveau le démarrage sécurisé à partir de msconfig et de redémarrer!

1
vortal

Ouvrez la commande Invite avec un accès administrateur et tapez les commandes suivantes.

une)

tasklist

il affiche la liste de tous les services disponibles. Là, vous pouvez voir le service que vous voulez arrêter/démarrer/redémarrer. Rappelez-vous la valeur PID du service que vous voulez forcer à arrêter.

b) Maintenant, tapez

taskkill /f /PID [PID value of the service] 

et appuyez sur Entrée. En cas de succès, vous obtiendrez le message "SUCCESS: le processus avec PID est terminé".

Ex : taskkill /f /PID 5088

Cela va tuer de force le service gelé. Vous pouvez maintenant revenir au gestionnaire de serveur et redémarrer le service.

1
Mohan D Kishore
sc queryex <service name>
taskkill /F /PID <Service PID>

par exemple

enter image description here

eg

0
abdul rehman kk