我有一个Wpf(与GUI的.Net应用程序)应用程序,公司将跨员工的计算机安装。 他们不希望他们的用户能够从TaskManager中杀死它。 该应用程序驻留在任务栏中; 它监听传入的消息并显示关于新消息的通知; 用户可以始终最大化/最小化以查看消息的详细信息 – 但她不应该能够阻止它。
我试图开发Windows服务,将监视提到的应用程序,并重新启动它 – 不幸的是服务不能用附加的GUI产生过程。
有没有行政方式,会禁止用户杀死某些应用程序(或重新启动它)?
可以假设用户在Windows 8或更高版本上工作,并且他们在他们的笔记本电脑上具有pipe理权限。
编辑:我只是重读,并意识到,你不是编写.Net应用程序,这使我所build议的大部分无效。 我会把它留在那里,以防其中一些有用的。 但是如果我想出其他的想法会回来。
pipe理权限是真正抛弃的东西。 做一个pipe理员不能做的事情是相当困难的,因为这违背了基本的pipe理原则。
有三种方法可以做到这一点,两种不完全是你想要的,另一种是很多工作。
1)创build一个或多个后台进程来监视你想保持活着的进程,并让它在不再有进程的时候重启进程。 如果你创build2个其他进程,他们可以监视彼此以及主进程,这样,如果其中一个被杀死,他们也会重新启动。 这几乎是你之前尝试做的,而不是一个服务只是做更多的应用程序。
2)比上面更简单,但有点DICEY,可能无法工作:添加到您的WPF一个总体的“try … catch”语句,在例外情况下,重新启动程序,本质上运行一个新的实例,随时死亡…这可能会导致大量的内存问题,因为旧的实例可能不会清除,直到新的实例closures。
3)拿走每个人的pipe理权限,并创build一个专门的组,具有用户需要pipe理权限的所有内容的伪pipe理权限,减去有问题的进程。 这个选项会很难,而且很可能会导致很多用户的失望。
我现在不能详细讨论,但如果其中一个听起来像是一个很好的select,而且你想要更多的细节,那就让我知道,稍后我会看看我能做些什么。
Windows服务可以访问计算机上的用户会话并借用用户令牌,并使用该令牌启动应用程序并将其连接到Windows Station 。
瞧你有什么需要的
在这一刻,我不记得我用过的API,但是我用这种技术来启动一个login用户的应用程序,连接到我的一个同事的Outlook发送一个恶作剧的电子邮件。