我们正在为所有用户开发一个在启动时运行的.net应用程序。现在,我们希望从任务管理器->进程列表中隐藏此应用程序,以便登录的用户无法删除它。我们使用的是windows-xp。
请让我知道这是否可行。
发布于 2012-08-21 17:08:53
隐藏进程是完全可能的;您正在讨论设计一个。如果这确实是您想要做的,请参阅this question。
然而,这通常不是解决这个问题的正确方法:如果你是一台机器的管理员,你不希望其他用户杀死一个进程,你就是不给他们这样做的权限。
让您的用户使用登录,并使用不同的帐户运行您的应用程序。
要可靠地获取登录时间,您可以使用windows安全日志,或者如果您在域中,则可以使用active directory服务:
Getting Local Windows User login session timestamp in C#
获取空闲时间更复杂,因为它取决于您认为“空闲”是什么,但是如果您认为GetLastInputInfo()足够了,那么这个问题描述了一种很好的方法,使用一个用户进程向系统进程报告:
由于用户不能终止系统进程,因此您可以让它监视用户进程,并在必要时重新创建它。
发布于 2012-08-21 17:06:08
将其隐藏在显眼的地方:使其作为服务运行,其名称看起来应该是windows的一部分。
然后让另一个服务监视this关闭并重新启动它。
发布于 2012-08-21 17:08:16
这就是Windows安全性的用途。定义用户帐户的权限,使其无法管理服务或终止进程。
如果情况与您在Colin's answer下面的注释中描述的情况相同,那么您可以运行一个服务级别的进程,该进程在每次用户进程被终止时重新唤醒用户进程。这样就更简单了。您可以使用WinApi中的CreateProcessAsUser代表用户执行流程:http://msdn.microsoft.com/en-us/library/ms682429%28v=vs.85%29.aspx
https://stackoverflow.com/questions/12051525
复制相似问题