Это не вина TaskKill. Хотя вы открыли два окна File Explorer, это не обязательно означает, что вы открыли два отдельных процесса для каждого.
Один из параметров, которые могут повлиять на вашу ситуацию, можно найти в разделе:
Параметры папки → вкладка "Вид" → "Дополнительные параметры" → "Запускать окна папок в отдельном процессе"
Этот параметр имеет следующие эффекты:
- Если этот флажок не установлен , в большинстве случаев окна проводника открываются в том же процессе
explorer.exe
котором размещаются панель задач и меню «Пуск». Заголовок окна этого процесса фиксирован. Если вы убьете этот процесс, вся ваша оболочка Windows исчезнет.
- Если этот флажок установлен , процесс, в котором размещаются панель задач и меню «Пуск», всегда отделен от процесса, в котором размещены окна проводника. Но все же это не означает, что вы получаете один отдельный процесс
explorer.exe
для каждого окна проводника. Я проверял это в Windows Server 2008 R2 и Windows 10 1709. Я всегда получаю один процесс explorer.exe
для всех окон Windows Explorer и еще один файл explorer.exe
для панели задач и меню «Пуск». WINDOWTITLE
этого процесса всегда является заголовком окна File Explorer, которое было открыто последним.
Одна из причин этого subprocess.Popen()
открывает отдельный процесс File Explorer, возможно, вы запускаете 32-битный Python на 64-битном компьютере, в этом случае subprocess.Popen()
просто открывает 32-битный explorer.exe
. (Это происходит не во всех версиях Windows, но, опять же, вы не указали ни одну.) Другая причина - вызов DCOM вне процесса, который всегда сбивает меня с толку.
Но суть этого такова: