按名称杀死进程

发布于 2024-10-15 09:45:08 字数 38 浏览 5 评论 0原文

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

How can I kill a process by name on Windows with API functions only?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

祁梦 2024-10-22 09:45:08

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

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

关于taskkill的更多信息可以在此处找到,

另一个用于终止进程的好工具是< a href="https://www.cs.cmu.edu/~tgp/scsadmins/winadmin/WMIC_Queries.txt" rel="noreferrer">wmic

In a cmd window you can use taskkill /F /im cmd.exe to kill all cmd.exe programs.

The /T flag tells taskkill to forcefully kill the processes, whereas
taskkill /im cmd.exe gracefully shuts it down by sending a kill signal.

more information on taskkill can be found here

another great tool for terminating processes is wmic

濫情▎り 2024-10-22 09:45:08

如果你所说的“kill”是指以极端偏见终止,那么总是有“TerminateProcess”。如果您能找到其他方法(例如将 WM_CLOSE 发布到主窗口),我建议您不要使用它,因为当您调用 TerminateProcess 时,加载的 DLL 不会正确卸载,因此使用的资源可能不会被释放。

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

EnumProcesses()
枚举进程模块()
GetModuleFileNameEx()
GetModuleBaseName()

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

If by kill you mean terminate with extreme prejudice,theres's always TerminateProcess. I'd advise against using it if you can find another way (such as posting WM_CLOSE to the main window), because loaded DLLs don't get unloaded properly when you call TerminateProcess, so used resources might not get released.

The real problem is how to get from a name to a process ID, this normally involves

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

and comparing the resulting base module name against what you're looking for. But there may be more than one instance of a module name executing on a system. How would you differentiate between instances in this circumstance?

顾铮苏瑾 2024-10-22 09:45:08
killall yourprocess

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

killall yourprocess

http://en.wikipedia.org/wiki/Killall (note that this only applies on Linux, as you haven't specified your OS)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文