求Python代码:关闭Windows所有打开程序并通过subprocess启动指定exe
实现Windows系统关闭所有应用并启动指定EXE的Python代码
下面是一段可以满足需求的Python代码,它会先关闭绝大多数用户级别的应用程序(避免误关系统核心进程),随后重启桌面进程保证桌面状态正常,最后启动指定的EXE文件:
import subprocess import time def close_all_apps(): # 关闭所有用户进程,排除系统关键进程和当前Python进程 try: # 强制关闭所有非系统进程(过滤掉系统进程、服务、以及当前Python运行进程) subprocess.run([ "taskkill", "/f", "/fi", "STATUS eq RUNNING", "/fi", "IMAGENAME ne explorer.exe", "/fi", "IMAGENAME ne svchost.exe", "/fi", "IMAGENAME ne csrss.exe", "/fi", "IMAGENAME ne wininit.exe", "/fi", "IMAGENAME ne python.exe", "/fi", "IMAGENAME ne pythonw.exe" ], check=True, capture_output=True, text=True) time.sleep(1) # 重启explorer.exe以刷新桌面,避免桌面无响应 subprocess.run(["taskkill", "/f", "/im", "explorer.exe"], check=True, capture_output=True) time.sleep(0.5) subprocess.Popen("explorer.exe") time.sleep(2) print("所有非系统应用已关闭,桌面已重置") except subprocess.CalledProcessError as e: # 忽略部分进程无法关闭的情况(比如有些进程已经结束) print(f"关闭进程时出现预期内的异常:{e.stderr}") def start_target_exe(exe_path): try: subprocess.Popen(exe_path) print(f"已成功启动应用:{exe_path}") except Exception as e: print(f"启动应用失败:{str(e)}") if __name__ == "__main__": # 替换为你要启动的EXE文件的绝对路径 TARGET_EXE = r"C:\Path\To\Your\TargetApp.exe" close_all_apps() start_target_exe(TARGET_EXE)
关键说明
- 进程过滤:
taskkill命令通过/fi参数排除了系统核心进程(如explorer.exe、svchost.exe等)以及当前Python运行进程,避免系统崩溃或脚本自身被关闭。 - 桌面重启:关闭大量进程后
explorer.exe可能出现异常,因此先关闭再重启它,保证桌面状态正常,方便pyautogui后续的屏幕识别操作。 - 路径注意:启动EXE时请使用绝对路径,如果路径包含空格,记得用原始字符串(
r"")包裹。
注意事项
- 运行此代码会强制关闭所有未保存的用户应用,可能导致数据丢失,请提前确认所有工作已保存。
- 部分后台进程或受保护的应用可能无法被关闭,属于正常情况,不影响后续
pyautogui的使用。
内容的提问来源于stack exchange,提问作者Maki
相关产品推荐
相关产品推荐

