我有一个 Avast 防病毒软件,它有一个进程“AvastSvc.exe”。如果我尝试在 Windows 任务管理器中结束/终止该进程,则会出现一个带有以下消息的窗口:“无法终止进程”、“无法完成操作。”、“拒绝访问”。尝试结束某些系统 Windows 进程(如 winlogon.exe)可能具有相同的行为(尽管有一次我设法杀死 winlogon.exe 并让我的机器挂起!)。
我希望我的应用程序(可能转换为服务)以相同的方式运行。我怎样才能做到这一点?
Disable Windows Task Manager so he can't kill my process是一个类似的问题,它有很多有趣的答案,但它们似乎没有采用上述防病毒软件使用的技术并导致“无法终止进程”消息。
http://forums.codeguru.com/showthread.php?t=503337有一个关于如何防止停止服务的解决方案(例如,通过 services.msc 控制台),但我需要防止在任务管理器中结束/终止其进程。
我在 Windows 7 下用 C++/winapi 编写应用程序,没有 CLR/.Net。
权限更新:防病毒进程 AvastSvc.exe 归“系统”帐户所有。但是,我有“系统”帐户拥有的其他进程,它们是可杀死的,而杀毒软件则不是。另外,我比较了防病毒进程和可杀进程的可执行权限和所有者,我看不出有什么区别。
更新用户控制和软件用途:软件功能介于系统和商业软件之间。软件的性质要求它永久运行。应用程序本身会有一个“关闭”动作,我们希望鼓励用户使用它并阻止他们杀死进程(这类似于防病毒软件所做的)。我知道完全阻止用户杀死它是不可能的,但我想让它变得更难。这个问题具体关于上面描述的方式(“无法终止进程”),某些服务(如 Avast)用来防止杀死他们的进程。对我来说,实现相同的行为就足够了。此外,如果用户不喜欢/不再需要该软件,他们将能够卸载该软件。