【问题标题】:Killing a "Critical Process" In Windows (C/C++)在 Windows (C/C++) 中杀死“关键进程”
【发布时间】:2009-03-18 04:15:50
【问题描述】:

杀死关键进程的最佳方法是什么?

【问题讨论】:

  • 什么是“关键过程”?示例...?

标签: c++ c windows kill


【解决方案1】:

它很重要是有原因的,所以你可能根本不应该杀死它。最好的方法是关闭盒子,以免您将其置于危险状态。

如果您选择忽略我的警告,here 是一些示例 C++ 代码。

【讨论】:

  • 好的。好吧,谢谢你的生活课。但是,如果我需要杀死一个系统进程,我该怎么做。
  • 对不起,ixo,我没有居高临下的意思,为你添加了链接。
  • 哦不,你听起来并不居高临下。您只是很合乎逻辑并使用推理:)谢谢您的链接,先生。
  • 杀死一个关键的系统进程意味着这台机器几乎被水淹没并且不能做任何事情(即不能验证用户,不能创建远程线程等)。不要这样做。
【解决方案2】:

This knowledge base article 描述了如何做到这一点。您首先调用SeDebugPrivilege() 来获得终止进程的权限,然后调用带有PROCESS_TERMINATE 标志的OpenProcess() 来获取要终止的进程的句柄,最后调用TerminateProcess() 来终止进程.

【讨论】:

    【解决方案3】:

    是的,按照亚当的建议去做。然后看着你的机器蓝屏,因为你刚刚终止了一个关键进程:)(顺便说一句,要清楚:亚当的建议是 100% 准确的,我根本不想批评它)。

    为什么要这样做?它们被称为关键流程是有原因的。

    【讨论】:

    • 我记得有一天我有一个服务控制面板卡住了,所以我决定从任务管理器中删除它 - 嗯,我问自己的名字是什么 - 显然它必须是 services.exe 跨度>
    • 如果您想知道,不,它不是并且机器蓝屏
    【解决方案4】:

    在 signal.h 中调用 kill 函数是在 C 中杀死进程的一种方法。不知道 C++ 中的交替。

    Killing a Process in C

    编辑:看看这段代码。

    WIN 32 API example

    【讨论】:

    • 谢谢,我喜欢这个链接顺便说一句! (已添加书签)通过 Windows API 的最佳方式是什么?
    • 这看起来像 POSIX,而不是 Windows。
    【解决方案5】:

    我想,问题是如何在没有 BSoD 的情况下杀死关键进程。为此,您需要首先删除临界位,并且仅在调用终止函数之后。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 2016-10-28
    • 2010-10-07
    • 2012-09-02
    相关资源
    最近更新 更多