如何仅使用 API 函数在 Windows 上按名称杀死进程?
问问题
1267 次
4 回答
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 上,请使用ZwQuerySystemInformation和TerminateProcess。有关详细示例,请参见此处:How to kill a process given a name
于 2011-02-01T12:41:02.593 回答