3

我们正在为所有用户开发一个在启动时运行的 .net 应用程序。现在我们想从任务管理器-> 进程列表中隐藏这个应用程序,这样登录的用户就不能删除它。我们使用的是 windows-xp

请让我知道这是否可行

4

3 回答 3

4

绝对可以隐藏一个进程;你说的是设计一个rootkit。如果这实际上是您想要做的,请参阅这个问题

然而,这通常不是解决此问题的正确方法:如果您是一台机器的管理员并且您不希望其他用户终止某个进程,那么您根本不授予他们执行此操作的权限。

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


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

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

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

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

由于用户无法终止系统进程,因此您可以让其监视用户进程并在必要时重新创建它。

于 2012-08-21T09:08:52.977 回答
1

将其隐藏起来:使其作为服务运行,名称看起来应该是 Windows 的一部分。

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

于 2012-08-21T09:06:07.990 回答
1

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

如果情况如您在 Colin 的回答下的评论中描述的那样,那么您可以运行一个服务级进程,该进程在每次被杀死(由用户)时重新生成用户进程。这种方式甚至更简单。您可以使用 WinApi 中的 CreateProcessAsUser 代表用户执行流程:http: //msdn.microsoft.com/en-us/library/ms682429%28v=vs.85%29.aspx

于 2012-08-21T09:08:15.987 回答