如何让任务管理器不要杀死我的程序?

dji*_*4me 10 windows delphi process messages taskmanager

有没有办法保护我的Delphi应用程序不被Windows任务管理器(或其他像Process Explorer)杀死?

我认为Windows消息可以做到这一点(通过挂钩和拦截TerminateProcess消息).

我想要一个这种保护的例子.卡巴斯基反病毒套件就像这样; 我们无法在任务管理器中结束他们的流程.

Jos*_*osh 14

正如Kornel所说,对用户隔离的进程有操作系统级保护.但一般来说,没有办法阻止你的进程被有权这样做的用户终止.并且用户有权终止作为该用户运行的进程.

即使您想将其作为SYSTEM运行,也无法使用此过程与登录用户进行交互.您需要将其作为服务运行,它将没有GUI.您可以尝试其他方法,例如将DLL加载到像Explorer.exe这样的进程中,用户不会因为他们不想终止而终止,但这只是滥用.

如果开发人员只能编写无法终止的应用程序,对于最终用户来说这将是一个非常糟糕的情况.如果这是一个内部应用程序,您可以检查服务器故障,看看是否有某种方法可以通过组策略实现它.


Rem*_*mko 11

像卡巴斯基这样的AV程序可能使用驱动程序并使用钩子来防止终止.在您的情况下,我建议在进程上设置ACL,这可以防止使用任务管理器或cmdline工具终止(如果用户没有调试权限).当然,用户总是可以使用Process Explorer之类的工具,获取进程的所有权,设置新的ACL和终止.

如果用户不是管理员,则在不同的用户上下文中运行该过程就足够了(例如,从服务启动它).

如此示例所示,使用Jedi Windows安全库可以轻松设置进程ACL .


Mas*_*ler 5

这是一个非常糟糕的主意.如果您的程序在其他人的计算机上运行,​​那么它就在他们的财产上,而不是您的财产上,并且需要在其家中充当客人的行为.这意味着你不会表现得好像你拥有这个地方,而且你当然不会告诉计算机所有者他不能用他自己的财产做什么,例如杀死他不想要的任务.如果你这样做,那么你的程序并不比恶意软件更好,并且可能被视为恶意软件.

  • -1:计算机可能不是他们的财产.例如,经理必须监督操作员的帮助台,特别是当他们可以访问敏感数据时.操作系统不是关于道德的,而是关于编程问题 (4认同)
  • 我认为知识应该公开,你认为不同.这就是为什么我建议在其他地方讨论这些事情,以避免在SO上燃烧.如果你认为OP不配得到他所要求的非常危险的信息 - 不要把它交给他.我希望别人有所不同 (2认同)