Wie kann ich unter Windows ein laufendes Programm ordnungsgemäß zum Beenden auffordern?

17

Unter Unix oder Linux ist es einfach, eine laufende Anwendung ordnungsgemäß zum Beenden aufzufordern: Sie senden ihr das SIGTERM-Signal. Wenn die Prozess-ID 1234 lautet, können Sie einfach kill 1234oder kill -s TERM 1234oder ausführen kill -15 1234.

Wie kann ich dasselbe in Windows tun?

Wenn ich mich richtig erinnere, wird die Funktion "Task beenden" des Task-Managers (nicht die Funktion "Prozess beenden") verwendet, um das zu tun, was ich möchte. Aber ab Windows 8.1 ist es nicht mehr so ​​sanft. Wenn ich die Funktion verwende, gehen nicht gespeicherte Daten verloren.

Ich möchte dazu keinen Code schreiben. Wenn ich das täte, würde ich nach Stack Overflow fragen. :)

unvergesslichidUnterstütztMonica
quelle
2
Wenn Sie ein Softwareentwickler sind und dies programmgesteuert tun möchten, lesen Sie die verwandte Frage zum Stapelüberlauf, wie Sie einen Prozess ordnungsgemäß zum Beenden auffordern können .
unvergesslicheUnterstützungMonica
4
Es gibt nichts Anmutiges an Windows ........
Moab

Antworten:

17

taskkill.exe

Andy E schreibt, dass Sie verwenden können taskkill.exe.

So beenden Sie den Prozess mit der Prozess-ID 1234:

taskkill /pid 1234

So beenden Sie notepad.exe:

taskkill /im notepad.exe

Für mehr Hilfe:

taskkill /?

Er addiert:

Der /fSwitch würde den Kill erzwingen, aber ihn nicht verwenden, sendet nur das Beendigungssignal, sodass die Anwendung ordnungsgemäß geschlossen wird.

Er hat recht. Ich habe versucht, mit taskkill.exe (ohne /f) Notepad zu beenden, und es hat wie erwartet funktioniert. Notepad fragte mich, ob ich den nicht gespeicherten Text, den ich eingegeben hatte, speichern wollte oder nicht.

Ich verwende die Heimversion von Windows 8.1. Es sieht so aus, als ob taskkill.exeWindows ohne Aufpreis mitgeliefert wurde. Es ist in c:\windows\system32.

Oder melde dich einfach ab

Wenn Sie sich darum nicht kümmern möchten, melden Sie sich einfach von Ihrem Windows-Benutzerkonto ab und melden Sie sich dann erneut an.

Konsolenanwendungen

In Bezug auf Konsolenanwendungen (z. B. PowerShell) fügt Chris Becke hinzu :

Es gibt keine echte Möglichkeit, Konsolenanwendungen unter Windows ordnungsgemäß zu schließen. Sie müssen eine Art würdevollen Schließmechanismus unterstützen.

unvergesslich
quelle
Beachten Sie, dass dies nicht genau nachbildet, was beim Abmelden oder Herunterfahren geschieht. Siehe hierzu stackoverflow.com/questions/520910/…
Matt McHenry
5

Sie können rmlogotest.exe(das Restart Manager Logo Test Tool) verwenden. Dieses von Microsoft entwickelte Freeware-Dienstprogramm ist Teil des Windows App Certification Kit.

Laden Sie das Windows SDK-Installationsprogramm herunter und führen Sie es aus, um die neueste Version des Windows App Certification Kit zu erhalten. (Sie können das neueste Windows SDK-Installationsprogramm über eine Google-Suche finden.) Deaktivieren Sie alle Kontrollkästchen mit Ausnahme des Kontrollkästchens Windows App Certification Kit. Warten Sie, bis das Kit heruntergeladen und installiert wurde. Wenn ich mich richtig erinnere, ist das Kit ein paar hundert Megabyte.

rmlogotest.exewird wahrscheinlich in sein, C:\Program Files (x86)\Windows Kits\10\App Certification Kitwenn Sie Version 10 des Windows SDK verwenden.

Öffnen Sie eine Eingabeaufforderung. Wechseln Sie in das richtige Verzeichnis. Geben Sie rmlogotestdann ein Leerzeichen und dann die Prozess-ID des Prozesses ein.

Wenn der Prozess "Restart Manager aware" ist, rmlogotestwird er ordnungsgemäß neu gestartet und "Logo Validation Passed" angezeigt. Andernfalls rmlogotestwird es gebeten, ordnungsgemäß zu kündigen. Anschließend wird möglicherweise die Meldung "Logo-Validierung fehlgeschlagen" angezeigt.

Ich habe versucht rmlogotest.exe, Notepad mit zu beenden, und es hat wie erwartet funktioniert. Notepad fragte mich, ob ich den nicht gespeicherten Text, den ich eingegeben hatte, speichern wollte oder nicht.

(Für den Fall, dass Sie sich fragen, was Restart Manager ist und tut, lassen Sie es mich erklären. Restart Manager ist Teil von Windows und wird von Windows Installer 4.0 und höher verwendet. Wenn Windows Installer eine geöffnete Datei überschreiben oder löschen muss, wird ein dreifacher Befehl verwendet. Schritt Prozess. Er weist Restart Manager an, den Prozess, der die Datei verwendet, ordnungsgemäß zu beenden. Er überschreibt die Datei. Dann weist er Restart Manager an, den Prozess erneut zu starten.)

unvergesslichidUnterstütztMonica
quelle
0

GnuWIN32 verfügt über Windows-Ports gängiger Linux-Utils, einschließlich kill.exe

http://gnuwin32.sourceforge.net/

Es unterstützt die folgenden Signale mit Namen oder einer Nummer

λ kill -l                                                                                                                                                                                                                                                                
INT                                                                                                                                                                                                                                                                      
ILL                                                                                                                                                                                                                                                                      
FPE                                                                                                                                                                                                                                                                      
KILL                                                                                                                                                                                                                                                                     
SEGV                                                                                                                                                                                                                                                                     
TERM                                                                                                                                                                                                                                                                     
CHLD                                                                                                                                                                                                                                                                     
ABRT             
teknopaul
quelle