我们正在开发一个.net应用程序,以便在启动时为所有用户运行。现在我们想要从任务管理器隐藏这个应用程序 - >进程列表,以便登录用户无法删除它。我们正在使用windows-xp
如果可行,请告诉我
答案 0 :(得分:4)
隐藏进程绝对是可能的;你在谈论设计 rootkit 。如果这实际上是您想要做的,请参阅this question。
这通常不是解决这个问题的正确方法:如果你是一台机器的管理员并且你不希望其他用户杀死一个进程,你根本就没有给他们这样做的权限。 / p>
让您的用户使用 limited user account 登录,并让您的应用程序在其他帐户下运行。
要可靠地获取登录时间,您可以使用某些Windows安全日志,或者如果您在域中使用活动目录服务:
Getting Local Windows User login session timestamp in C#
获取空闲时间更复杂,因为它取决于您认为“空闲”的内容,但如果您认为GetLastInputInfo()
足够,则此问题描述了一种很好的方法,用户进程报告回来系统流程:
由于用户无法终止系统进程,您可以监视用户进程并在必要时重新创建它。
答案 1 :(得分:1)
将其隐藏在明显的视线中:使其作为服务运行,其名称看起来应该是Windows的一部分。
然后有另一个服务,监视这个关闭并重新启动它。
答案 2 :(得分:1)
这就是Windows安全的用途。以他/她无法管理服务或终止进程的方式定义用户帐户的权限。
如果案例与您在Colin的答案中的评论中所描述的那样,那么您可以运行一个服务级别的流程,该流程每次被用户杀死时都会重新生成用户进程。这样它甚至更简单。您可以使用WinApi中的CreateProcessAsUser代表用户执行进程:http://msdn.microsoft.com/en-us/library/ms682429%28v=vs.85%29.aspx