2010-08-23 53 views
4

在C++中有无条件杀死进程的方法吗?无条件杀死进程(Windows)

不管是什么状态这个过程中。

我知道了TerminateProcess,但它仍然可能失败。如果你不想让它失败会怎么样。

就像你杀死任务管理器中的进程一样,它会死亡;无论。这是我正在寻找的那种杀戮。

+2

您是否知道除了“TerminateProcess”会失败的权限失败之外的其他情况? – 2010-08-23 13:36:17

+1

@James:如果进程正在运行内核模式代码,它可能不会被终止。添加一些写得不好的驱动代码,你肯定会陷入无法从中恢复的无限循环。 – 2010-08-23 13:48:47

+1

拔插头 – Default 2010-08-23 13:52:48

回答

9

并非每个进程都可以从任务管理器中被杀死。这取决于权限和进程状态。挂在winsock中的一些进程无法被杀死(甚至任务管理器也会挂起)。

+5

确实如此。杀死一些进程(特别是某些系统服务,如RPC服务器)会出于稳定性原因(会弹出30秒关闭提示符)而导致整个系统(人为地但自动)停止运行。但除此之外,'TerminateProcess'是你在Windows中最好的选择(顺便说一下,这就是Task Manager所做的)。 – Piskvor 2010-08-23 13:41:49

+0

进程资源管理器(来自sysinternals)如何?我甚至从procexpl中杀死了svchost(不明智) – Default 2010-08-23 13:54:03

+2

进程管理器使用系统的无证内部(甚至可能是内核模式的东西,我没有检查)。有很多你可以这样做,但是进程管理器有时也不能杀死进程(如果进程在内核中被阻塞)。 svchost是一个用户模式的进程,所以它只是一个权限问题。 – joekoyote 2010-08-23 14:07:27