Ich habe zwei Instanzen von geöffnet D:\akshit
Mappe. Eine, die ich manuell über die GUI geöffnet habe. Das andere habe ich mit einem Skript erstellt, das aufruft subprocess.Popen()
. Wenn ich nun den folgenden Befehl schreibe, wurde nur die Instanz mit geöffnet subprocess.Popen()
wird getötet:
TASKKILL /F /FI "WINDOWTITLE eq akshit" /IM explorer.exe
Kann mir jemand erklären auf welcher Basis das geht taskkill
beschließen, die anderen Instanzen nicht zu töten? Kann ich dieses Verhalten irgendwie ändern, um alle Instanzen mit dem Fenstertitel "akshit" zu beenden?
windows-explorer
python
task-manager
wmi
akshit bhatia
quelle
quelle
TASKLIST /F /FI "WINDOWTITLE eq akshit" /IM explorer.exe
? Dieser Befehl dient zum Auflisten der Aufgaben. Wenn auch nur ein Ergebnis angezeigt wird, haben Sie Ihre Antwort. Sie können TASKLIST verwenden, um herauszufinden, was geändert werden muss, damit sich TASKKILL richtig verhält.Antworten:
Es ist nicht die Schuld von TaskKill. Wenn Sie zwei Datei-Explorer-Fenster geöffnet haben, bedeutet dies nicht unbedingt, dass Sie zwei separate Prozesse für jedes geöffnet haben.
Eine der Einstellungen, die sich auf Ihre Situation auswirken können, finden Sie unter:
Ordneroptionen → Registerkarte Ansicht → Erweiterte Einstellungen → "Ordnerfenster in einem separaten Prozess starten"
Diese Einstellung hat folgende Auswirkungen:
explorer.exe
Prozess, der die Taskleiste und das Startmenü hostet. Der Fenstertitel dieses Prozesses ist festgelegt. Wenn Sie diesen Prozess beenden, verschwindet Ihre gesamte Windows-Shell.explorer.exe
Prozess für jedes File Explorer-Fenster. Ich habe dies in Windows Server 2008 R2 und Windows 10 1709 getestet. Ich bekomme immer genau einenexplorer.exe
Vorgang für alle meine File Explorer-Fenster und ein weiteresexplorer.exe
für meine Taskleiste und Startmenü. DasWINDOWTITLE
dieses Prozesses ist immer der Titel des zuletzt geöffneten Datei-Explorer-Fensters.Ein Grund dafür
subprocess.Popen()
Öffnet einen separaten Datei-Explorer-Prozess, wenn Sie einen 32-Bit-Python auf einem 64-Bit-Computer ausführen. In diesem Fallsubprocess.Popen()
öffnet gerade ein 32-Bitexplorer.exe
. (Dies ist nicht in allen Windows-Versionen der Fall, aber Sie haben keine angegeben.) Ein anderer Grund ist der Out-of-Process-DCOM-Aufruf, der mich immer auslöst.Aber der Kern davon ist:
quelle