我正在编写一个C ++ QT桌面应用程序,旨在在Windows操作系统上运行 此应用程序应枚举所有正在运行的进程,并将终止特定进程(由名称识别)。我知道有两种方法可以做到:
tasklist
命令获取流程,taskkill
结束流程。在代码风格,效率和性能方面哪个选项更好?或者有第三种选择吗?
答案 0 :(得分:5)
因此,选择其中一个的论据主要是编程和维护的简易性。用于枚举进程的API并不是最简单的,但您可以在Web上找到许多示例(如here)。使用任务列表将需要获取输出并解析它。
我出于以下原因选择了API:
tasklist
和taskkill
是否保证在每台Windows计算机上。它们确实附带了操作系统,但是有人可能会认为它们扩大了攻击面或其他任何东西,然后移除它们。tasklist
的输出是否取决于操作系统区域设置。你呢?答案 1 :(得分:0)
答案 2 :(得分:0)
当然,您使用Windows Api。这比使用外部exe杀死进程更好。 您可以使用需要进程ID的OpenProcess获取进程句柄。打开后,您可以使用TerminateProcess提供流程处理。