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