让我的过程保持活力 - 永远

时间:2011-03-08 18:43:31

标签: c++ windows process

是否可以阻止用户(甚至管理员)杀死我的程序?
或者在被杀的情况下,它会迅速恢复?

更新 澄清:我正在编写一个监控程序,比如父母控制,记录用户用PC做什么。你最近可以通过查看我的其他问题来猜测 这样一个项目的第一个需求就是活着!

现在,有人帮忙吗?

3 个答案:

答案 0 :(得分:5)

首先,不要这样做。第二,仍然不这样做。

第三,如果您的程序太棒了以至于它应该永远不会停止运行,您可以始终提供安装运行程序的服务的功能,并在程序死亡时重新启动它。但是想想这很长很难,因为用户通常会对那些不会死的程序感到非常恼火。相反,让你的程序足够有用,没有人会希望它停止运行,并在它死亡时重新启动它。

编辑:好的,所以考虑到你对OP的更新,我们在这里尝试一些想法。

有两种基本情况需要考虑:如果最终用户拥有该机器的管理员权限,那么在一般情况下你几乎无能为力。无论您尝试什么,都可以被具有管理权限的人绕过。

那么如果用户没有管理员权限呢?然后用户无法杀死root / administrator启动的任意进程。在这种情况下,您可以尝试将软件安装为守护程序样式/始终运行。在Windows上,您将安装为在引导时自动启动的系统服务。对于Solaris,您将使用SMF并将其设置为在终止时自动重新启动。在Linux上你可以做一些类似于root拥有的shell,它会在程序退出时永远重启程序。

答案 1 :(得分:1)

不,这是不可能的。管理员总是知道如何切断电源。

好的,现在澄清了,我也会添加一些词语。

我实际上已经看到一个用于Windows的家长控制工具,它使用相同进程的多个实例相互监视,并且如果用户终止其中一个,它将立即重新启动它们的复杂性。工作得很好 - 除非有人切换到控制台并快速杀死他们。但是,使用任务管理器的速度很慢。

当然该方法是有限的,特别是因为管理员可以轻松地删除自动启动条目(可以避免,即通过使用稍微隐藏的服务来产生进程)。尽管如此,除非你的目标是非常黑客的孩子,否则它非常有效。

但毕竟人们可以重新安装完整的操作系统,从而避免采取所有预防措施。 所以最好的方法可能就是隐藏你的工具并希望它找不到。

答案 2 :(得分:0)

你可能会疯了。总是可以杀死或摧毁一个“天真”烦人的程序。尝试一些好事。