按名称杀死进程

时间:2011-02-01 12:34:43

标签: windows kill-process

如何在仅具有API函数的Windows上按名称终止进程?

4 个答案:

答案 0 :(得分:1)

如果通过杀戮你的意思是以极端的偏见终止,那么theres总是TerminateProcess。如果你能找到另一种方式(例如将WM_CLOSE发布到主窗口),我建议不要使用它,因为当你调用TerminateProcess时加载的DLL没有正确卸载,所以使用的资源可能不会被释放。

真正的问题是如何从名称到进程ID,这通常涉及

EnumProcesses()
EnumProcessModules()
GetModuleFileNameEx()
GetModuleBaseName()

并将生成的基本模块名称与您要查找的内容进行比较。但是,在系统上执行的模块名称可能不止一个。在这种情况下,您如何区分实例?

答案 1 :(得分:1)

killall yourprocess

http://en.wikipedia.org/wiki/Killall(请注意,这仅适用于Linux,因为您尚未指定操作系统)

答案 2 :(得分:0)

在cmd窗口中,您可以使用taskkill /F /im cmd.exe来终止所有cmd.exe程序。

/T标志告诉taskkill强制终止进程,而 taskkill /im cmd.exe通过发送一个终止信号来优雅地关闭它。

可以找到有关taskkill的更多信息here

另一个终止流程的好工具是wmic

答案 3 :(得分:-1)

假设您的意思是在Windows上,请使用ZwQuerySystemInformationTerminateProcess。请参阅此处获取详细示例:How to kill a process given a name