Comment tuer une tâche qui manque d'une instance?

Spotify s'est d'abord tué, mais "quelque chose" a persisté, ce qui était détectable en tant que tâche avec le PID 8664 et en raison du fait que l'utilisation de RAM changeait de temps en temps – il "faisait quelque chose".

Tout d'abord, ce processus m'a empêché d'écouter de la musique parce que Spotify a refusé de redémarrer en raison de cette instance.

J'ai donc essayé de me débarrasser de ce processus. Mais ni le gestionnaire de tâches ni la commande taskkill (comme Admin, bien sûr) ont réussi à le faire.

Au moins, je me suis donné une «raison» que je traduirai ici.

>taskkill /pid 8664 /f >taskkill /im spotify.exe /f 

Les deux ont donné:

 ERROR: The process "spotify.exe" with PID 8664 could not be terminated. Reason: There is currently no instance executed by this task. 

J'aimerais savoir ce que cela signifie et s'il existe une autre option sur la façon de mettre fin à un tel processus.

(Windows 7 Pro 64 bit)

Le processus est presque certainement mort, c'est-à-dire qu'il n'exécute plus de code. Cependant, la comptabilité à ce sujet ne disparaît pas jusqu'à ce que chaque manipulation et chacun de ses threads soit fermé. Vous pourriez avoir un autre programme tenant une telle poignée ouverte (les programmes antivirus sont susceptibles d'être coupables), ou il aurait pu faire une requête avant sa mort à un pilote en mode noyau qui est maintenant accroché (une fois, j'ai eu un lecteur de CD qui l'a provoqué lot). Autres lectures: "Pourquoi certains processus restent-ils dans le Gestionnaire des tâches après leur mort?" Et "Pourquoi tous ces processus persistent-ils près de la mort, et qu'est-ce qui les maintient en vie?"

Spotify refuse de lancer de nouveau car il voit une copie de lui-même déjà en cours d'exécution, mais il semble simplement chercher un autre processus appelé spotify . (Une application à une seule instance est son propre déni de service, selon les termes de Raymond Chen.) La façon la plus simple de résoudre ceci serait de redémarrer l'ordinateur, car cela effacera toutes les poignées et la comptabilité.

Mais si vous avez vraiment l'impression de Fixing It Yourself TM , téléchargez Process Explorer , un utilitaire gratuit fantastiquement utile de Sysinternals. (Je n'ai pas d'affiliation.) Exécutez-le, pas d'installation requise, et acceptez le EULA. Sous Fichier, choisissez Afficher les détails pour tous les processus ; Cela provoque l'ouverture de Process Explorer en tant qu'administrateur. Ensuite, sous Rechercher, choisissez Trouver une poignée ou une DLL . Tapez le nom du processus zombie (puits, cadavre) et appuyez sur Rechercher.

À la recherche de poignées

Les colonnes Process et PID vous indiquent quel processus possède le handle. La colonne Type indique quel genre de chose est-il; Nous nous intéressons à ceux de type Process ou Thread . La colonne Nom vous indique à quoi sert la touche. (Beaucoup de processus sont propres à eux-mêmes, ceux-ci disparaîtront si l'application de possession se termine sans problèmes en mode noyau).

Danger : la fermeture d'une poignée dont une application a vraiment besoin est une excellente façon de l'écraser. Si possible, quittez l'application qui possède la poignée. Mais si vous ne pouvez pas, ou vous avez juste envie de frapper les choses avec des marteaux …

Cliquez sur une entrée dans cette fenêtre de recherche pour ouvrir le volet des poignées. Cliquez avec le bouton droit de la souris sur l'entrée nouvellement mise en surbrillance dans ce volet et choisissez Fermer la poignée pour l'effacer.

Une fois que toutes les poignées sont fermées, le processus disparaîtra.