Einen Prozess in Windows wirklich beenden

375

Gelegentlich wird ein Programm auf einem Windows-Computer verrückt und hängt einfach. Also rufe ich den Task-Manager auf und drücke die Schaltfläche "Prozess beenden". Dies funktioniert jedoch nicht immer. Wenn ich es oft genug versuche, stirbt es normalerweise irgendwann, aber ich würde es wirklich gerne sofort töten können. Unter Linux konnte ich nur kill -9garantieren, dass ein Prozess sterben wird.

Dies kann auch zum Schreiben von Batch-Skripten verwendet werden, und das Schreiben von Batch-Skripten wird programmiert.

Gibt es ein Programm oder einen Befehl, der mit Windows geliefert wird und einen Prozess immer abbricht? Eine kostenlose Drittanbieter-App wäre in Ordnung, obwohl ich dies lieber auf Computern tun möchte, auf denen ich mich zum ersten Mal hinsetze.

Eli Courtwright
quelle
19
Streuprozesse sind ein häufig genug auftretendes Problem bei der Programmierung, dem ich nicht zustimmen muss. Dies ist keine Off-Topic-Frage.
Dan Moulding
19
Als Entwickler beschäftige ich mich jeden Tag mit Prozessmanagement. Das ist für mich ein absolutes Thema!
John Fitzpatrick
14
Ich rate dringend davon ab, diese Frage zu löschen. +195 und es ist ein sehr früher Google-Hit für die betreffende Frage.
Joshua
2
"Es sei denn, es handelt sich direkt um Tools, die hauptsächlich für die Programmierung verwendet werden" Ich bin auf dieses Problem gestoßen, da Visual Studio einen Prozess am Laufen hält, der es mir unmöglich machte, ihn zu beenden. Durch das Schließen von Visual Studio konnte der problematische Prozess beendet werden.
Joakim
Sie können das PowerShell-Cmdlet Stop-Process verwenden .
Rosberg Linhares

Antworten:

318

"Prozess beenden" auf der Registerkarte "Prozesse" ruft TerminateProcessdie ultimative Methode auf, mit der Windows einen Prozess beenden kann.

Wenn es nicht verschwindet, ist es derzeit gesperrt und wartet auf eine Kernel-Ressource (wahrscheinlich einen fehlerhaften Treiber). Es gibt nichts (außer einem Neustart), was Sie tun könnten, um den Prozess zu beenden.

Schauen Sie sich diesen Blogeintrag von wayback an, wenn: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

Unix-basierte Systeme wie Linux haben auch das Problem, dass Prozesse überleben können, kill -9wenn sie sich im sogenannten "unterbrechungsfreien Ruhezustand" befinden (angezeigt durch top und ps als Status D). Zu diesem Zeitpunkt schlafen die Prozesse so gut, dass sie eingehende Signale nicht verarbeiten können (was killtut - Signale senden).

Normalerweise sollte ein unterbrechungsfreier Schlaf nicht lange dauern, aber wie unter Windows können defekte Treiber oder defekte Userpace-Programme ( vforkohne exec) für Dimmer schlafen .

Pilif
quelle
29
Ich hasse es zwar, dass dies die richtige Antwort ist, aber ich habe keinen Zweifel daran, dass sie korrekter ist als der unten stehende Taskkill ... dumme Buggy-Fahrer!
Codetaku
6
Etwas weniger ärgerlich als ein Neustart ist das Abmelden / Wiederanmelden. Immer noch Arbeit verlieren, aber vielleicht nicht ganz so viel Zeit.
Awidgery
8
Dies wird durch einen anderen Prozess verursacht, der sicherstellt, dass der ursprüngliche Prozess immer ausgeführt wird. Sie haben Ihre alte Instanz getötet und eine neue wurde vom Wachhund
Pilif
8
Diese Antwort ist überhaupt nicht richtig. "Prozess beenden" ist nicht der ultimative Weg, um Prozesse zu beenden, da es beispielsweise keine Serviceprozesse beenden kann. taskkill /fist das ultimative.
Benutzer626528
5
TaskKill / f ruft nur die TerminateProcessAPI auf. Es macht genau das Gleiche wie der Task-Manager (obwohl Sie mit erhöhten Rechten Recht haben).
Pilif
233
taskkill /im myprocess.exe /f

Das "/ f" steht für "force". Wenn Sie die PID kennen, können Sie diese wie folgt angeben:

taskkill /pid 1234 /f

Viele andere Optionen sind möglich, geben Sie einfach taskkill /? für alle. Die Option "/ t" beendet einen Prozess und alle untergeordneten Prozesse. das kann für Sie nützlich sein.

JosephStyons
quelle
10
Nur eine Notiz. Dies ist besonders nützlich, wenn Sie Skripte für die Serververwaltung schreiben. kill.exe (aus dem NT Res-Kit) führt zum Beenden eines Programms. Wenn Sie jedoch einen Crash-Handler installiert haben (insbesondere windbg), kann dies zu Problemen führen, da das Betriebssystem den abgebrochenen Prozess als abgestürzt ansieht und versucht, ein Debugging durchzuführen es. Taskkill führt nicht zu diesem Problem.
Aaron
6
@lzprgmr - taskkill und "end task" rufen wahrscheinlich beide die gleiche zugrunde liegende Windows-Funktion "TerminateProcess" auf msdn.microsoft.com/en-us/library/windows/desktop/…
JosephStyons
60
Dies ist nicht effektiver als das "Beenden des Prozesses" durch den Task-Manager.
Eddie
2
Ich habe versucht, SugarSync.exe gewaltsam zu beenden, ohne neu starten zu müssen (da SugarSync zweimal neu gestartet wird, bevor es wirklich losgeht, funktioniert es wieder), aber Taskkill / T / F / IM SugarSync.exe funktioniert nicht - obwohl es behauptet "ERFOLG"
Jon Coombs
2
VIELEN DANK! taskkill /pid 1234 /ffunktioniert, wenn End Task sich weigert zu arbeiten! BEEINDRUCKEND!
Hendy Irawan
37

Process Hacker bietet zahlreiche Möglichkeiten, einen Prozess zu beenden.

(Klicken Sie mit der rechten Maustaste auf den Vorgang und gehen Sie dann zu Verschiedenes-> Terminator.)

user541686
quelle
5
Ich kann nicht viel zur Bestätigung finden, da die Suche danach nur Millionen von KOSTENLOSEN DOWNLOADs bringt !!! Links. Aber es macht das, was es verspricht, Virenrisiken und alles.
bwerks
2
@ Nuzzolilo: Sicher! Klicken Sie mit der rechten Maustaste auf den Vorgang und gehen Sie zu Verschiedenes-> Terminator.
user541686
6
Funktioniert nicht bei allen Prozessen, ich hatte einen, der alle Optionen überlebt hat.
Zitrax
7
Es hat meinen Computer geblendet. Der Prozess wurde nach dem Neustart beendet. Gute Arbeit ... -.- '
Pedro Oliveira
5
Leider wurde Terminator in v2.39 entfernt :(
raymai97
23

JosepStyons ist richtig. Öffnen Sie cmd.exe und führen Sie es aus

taskkill /im processname.exe /f

Wenn es einen Fehler gibt, der sagt:

FEHLER: Der Prozess "process.exe" mit PID 1234 konnte nicht beendet werden. Grund: Der Zugriff wird verweigert.

Versuchen Sie dann, cmd.exe als Administrator auszuführen.

Dhruv Chandhok
quelle
9
Wenn Sie als Administrator ausgeführt werden, ändert sich der Fehler. Es heißt jetzt: ERROR: The process with PID 17888 (child process of PID 17880) could not be terminated. Reason: There is no instance of the task.und es bezieht sich auf die Eltern-PID 17880. Da es die Eltern nicht finden kann, wird es das verwaiste Kind nicht töten. :(
Jesse Chisholm
1
"Sie müssen auch den untergeordneten
Dhruv Chandhok
In meinem Fall war der Zombie-Prozess, den ich ihm sagte, dass er töten soll, das einzige Kind und es gab keinen Elternteil, obwohl der Zombie immer noch dachte, er hätte einen Elternteil. In meinem Fall wurde dies mithilfe des Pfads "Erweiterte Reparatursysteme für Windows 8.1-Einstellungen" behoben, wobei jedoch das Löschen einer Festplatte abgebrochen und lediglich ein vollständiger erzwungener Neustart durchgeführt wurde. Das regelmäßige Herunterfahren und Neustarten ist wirklich Ruhezustand / Ruhezustand (um beim Start Zeit zu sparen). Es ist nicht trivial, es vollständig herunterzufahren.
Jesse Chisholm
"Zugriff verweigert" bedeutet, dass der Prozess bereits geschlossen wird. Zum Beispiel, wenn Sie gerade versucht haben, es früher zu schließen. Sie müssen warten, bis es geschlossen wird.
Pacerier
Taskkill-Ergebnisse unter Administratorrechten: Zugriff verweigert.
eigenartig
22

Holen Sie sich den Prozess-Explorer von sysinternals (jetzt Microsoft)

Prozess-Explorer - Windows Sysinternals | Microsoft Docs

Iain Holder
quelle
15
Das bietet zwar mehr Informationen (und einige eingeschränkte Möglichkeiten, nach Sperrgriffen zu suchen), aber ich hatte keinen größeren Erfolg beim Beenden von Aufgaben als mit dem grundlegenden Task-Manager. Bestimmte Prozesse (wie Antivirus und SugarSync.exe) weigern sich einfach zu sterben.
Jon Coombs
15

Ein Trick, der gut funktioniert, besteht darin, einen Debugger anzuhängen und den Debugger dann zu beenden.

Unter XP oder Windows 2003 können Sie dies mit ntsd tun, das im Lieferumfang enthalten ist:

ntsd -pn myapp.exe

ntsd öffnet ein neues Fenster. Geben Sie einfach 'q' in das Fenster ein, um den Debugger zu beenden und den Vorgang abzuschließen.

Ich habe gewusst, dass dies auch dann funktioniert, wenn der Task-Manager einen Prozess nicht beenden kann.

Leider wurde ntsd aus Vista entfernt und Sie müssen die (kostenlosen) Debbugging-Tools für Windows installieren , um einen geeigneten Debugger zu erhalten.

Rob Walker
quelle
1
Vielen Dank dafür. Fügen Sie "-c q" (ohne Anführungszeichen) zum automatischen Beenden hinzu, was es zum idealen Prozesskiller macht.
Joanis
2
Wenn Visual Studio und eine zu debuggende Anwendung hängen bleiben, hängen Sie die alte Instanz von VS an und beenden Sie sie. Der Killer kann eine neue Instanz von VS sein, die dann das alte Projekt öffnen und es Ihnen ermöglichen kann, weiter zu arbeiten.
Bruno Martinez
Ich kann nicht herausfinden, wie ich etwas von diesem Link herunterladen kann, außer winsdk_web.exewas nichts bewirkt.
Endolith
Sie können es jetzt im Windows 10 SDK herunterladen, indem Sie das Installationsprogramm ausführen und dann alles außer "Debugging-Tools für Windows" ( docs.microsoft.com/en-us/windows-hardware/drivers/debugger/… ) deaktivieren
Coburn,
6

Richten Sie einen AT-Befehl ein, um den Task-Manager oder den Prozess-Explorer als SYSTEM auszuführen.

AT 12:34 /interactive "C:/procexp.exe"

Wenn sich der Prozess-Explorer in Ihrem Root-C-Laufwerk befindet, wird er als SYSTEM geöffnet, und Sie können jeden Prozess beenden, ohne dass Fehler beim Zugriff verweigert werden. Stellen Sie dies für eine Minute in der Zukunft ein, dann wird es für Sie angezeigt.

David Ruark
quelle
4
Wenn ich dies versuche, wird folgende Warnung angezeigt, sodass es anscheinend nicht mehr funktioniert: "Warnung: Aufgrund von Sicherheitsverbesserungen wird diese Aufgabe zum erwarteten Zeitpunkt ausgeführt, jedoch nicht interaktiv. Verwenden Sie das Dienstprogramm schtasks.exe, wenn eine interaktive Aufgabe erforderlich ist ('schtasks" /?' für Details)."
WhiteKnight
0

Wenn der ntsd-Zugriff verweigert wird, versuchen Sie:

ZeroWave wurde als einfaches Tool entwickelt, mit dem jede Art von Prozess auf mehreren Ebenen beendet werden kann.

ZeroWave ist aufgrund seiner einfachen Installation und seiner sehr benutzerfreundlichen grafischen Oberfläche auch ein benutzerfreundliches Programm.

ZeroWave verfügt über drei Beendigungsmodi und kann mit dem "INSANE" -Modus jede Art von Prozess beenden, der unter Windows ausgeführt werden kann.

Es scheint, dass ZeroWave avp.exe nicht töten kann

DIYismus
quelle
0

Zu Ihrer Information, Sie können manchmal SYSTEM oder Trustedinstaller verwenden, um Aufgaben zu beenden;)

google quickkill_3_0.bat

sc config TrustedInstaller binPath= "cmd /c TASKKILL /F  /IM notepad.exe
sc start "TrustedInstaller"
RmccurdyDOTcom
quelle