-1

如何仅使用 API 函数在 Windows 上按名称杀死进程?

4

4 回答 4

2

在一个 cmd 窗口中,您可以使用它taskkill /F /im cmd.exe来杀死所有 cmd.exe 程序。

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

关于 taskkill 的更多信息可以在这里找到

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

于 2017-02-17T11:04:47.210 回答
1

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

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

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

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

于 2011-02-01T12:37:24.503 回答
1
killall yourprocess

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

于 2011-02-01T12:39:54.047 回答
-1

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

于 2011-02-01T12:41:02.593 回答