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