如何从进程列表中隐藏.net应用程序

我们正在开发一个.net应用程序,以便在所有用户启动时运行。 现在我们要从任务pipe理器 – >进程列表中隐藏这个应用程序,以便login用户不能删除它。 我们正在使用windows-xp

请让我知道这是否可行

隐藏一个过程是完全可能的。 你正在谈论设计一个rootkit 。 如果这实际上是你想要做的,看到这个问题 。

但是,通常不是解决这个问题的正确方法:如果你是一台机器的管理员,并且你不希望其他用户杀死一个进程,那么你根本就不给他们权限去做。

让用户使用有限的用户帐户登录,并让您的应用程序在不同的帐户下运行。


要可靠地获得登录时间,可以使用一些Windows安全日志,或者如果您位于域中,则使用活动目录服务:

在C#中获取本地Windows用户登录会话时间戳

获得空闲时间更复杂,因为它取决于你认为是“闲置”,但是如果你认为GetLastInputInfo()足够了,这个问题描述了一个很好的方法来实现,用户进程报告回到系统进程:

在C#中获取用户空闲时间?

由于用户不能杀死系统进程,因此可以监视用户进程并在必要时重新创建进程。

这就是Windows的安全。 以无法管理服务或终止进程的方式定义用户帐户的权限。

如果案例如Colin的回答中所述,那么您可以运行一个服务级别的进程,在用户进程每次(用户)终止时重新执行用户进程。 这样就更简单了。 您可以使用WinApi中的CreateProcessAsUser来代表用户执行进程: http : //msdn.microsoft.com/en-us/library/ms682429%28v=vs.85%29.aspx

隐藏在明显的视野之内:使它看起来像它应该是窗口的一部分的名称运行。

然后有另一个服务,监视这个关闭并重新启动它。