微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有效地杀死一个Windows进程

我正在编写一个C ++ QT桌面应用程序,打算在Windows操作系统上运行。

此应用程序应枚举所有正在运行的进程,并将杀死一个特定进程(按名称识别)。 有两种方法我知道这样做:

使用Windows API。

使用tasklist命令来获取进程,并使用taskkill来结束进程。

代码风格,效率和性能方面哪个选项更好? 还是有第三个select?

在C#中执行相同环境中的多个命令

如何在Python中获取文件closures事件

如何在VB6中执行进一步的代码之前等待shell进程完成

MSI安装程序,64位操作系统,写入 windows system32 inetsrv文件

killproc和pidofproc在Linux上

IMO的效率和性能不应该让你担心。 你可能不会每秒杀死1000个进程,所以如果一个需要10毫秒,另一个需要100毫秒,我怀疑有人会关心。

所以,选择其中一个的论据大多是编程和维护的简单方法。 枚举进程的API不是最简单的,但是你可以在网上找到很多例子(就像这里 )。 使用任务列表将需要获取输出并解析它。

我会为这些原因去API:

如果操作失败,您可以获得更多信息。 你会确切地知道问题在哪里,它是什么。

我不确定tasklist和taskkill是保证在每台Windows机器上。 他们确实带着操作系统,但有人可能会认为他们扩大了攻击面或其他任何东西,并将其删除

解析文本是容易出错的。 我不知道,例如,如果tasklist的输出取决于操作系统区域设置。 你做?

其实我和WMI一起工作,我读了你可以用WMI杀死进程

终止Win32_Process类的方法

(只是为了信息:))

我在其他应用程序中使用winAPI

当然,你使用Windows Api。 哪种方法比使用外部exe来杀死进程要好。 你可以使用OpenProcess获取进程句柄,这需要你一个进程ID。 一旦你打开你可以使用TerminateProcess给出一个进程句柄。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐