【问题标题】:Unconditionally Kill a process (Windows) [duplicate]无条件终止进程(Windows)[重复]
【发布时间】:2011-04-02 15:49:31
【问题描述】:

在 C++ 中有没有办法无条件地杀死一个进程?

不管这个进程处于什么状态。

我知道 TerminateProcess,但它仍然会失败。如果你不希望它失败怎么办。

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

【问题讨论】:

  • 除了权限失败之外,你知道TerminateProcess会失败的其他情况吗?
  • @James:如果进程正在运行内核模式代码,它可能不会被终止。添加一些编写不佳的驱动程序代码,您肯定会陷入无法恢复的无限循环。

标签: c++ windows


【解决方案1】:

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

【讨论】:

  • 是的。出于稳定性原因(弹出一个 30 秒的关机提示),杀死一些进程(尤其是一些系统服务,如 RPC 服务器)将关闭您的整个系统(人为但自动)。但除此之外,TerminateProcess 是您在 Windows 中的最佳选择(顺便说一句,这就是任务管理器所做的)。
  • 进程浏览器(来自 sysinternals)怎么样?我什至从 procexpl 中杀死了 svchost(不明智)
  • 进程资源管理器使用未记录的系统内部结构(甚至可能是内核模式的东西,我没有检查)。你可以通过这种方式做很多事情,但是进程资源管理器有时也无法杀死进程(如果进程在内核中被阻塞)。 svchost 是一个用户模式进程,所以它只是一个权限问题。
猜你喜欢
  • 2013-12-24
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
相关资源
最近更新 更多