2

我无法将它实现为 Windows 服务,因为我的进程必须与桌面交互,并且在 Windows 7 中被禁止。

完成此任务的最简单方法是什么?从另一个(特权)用户开始?这该怎么做?

我的用户不是黑客,只是一个操作员,所以像隐藏任务管理器这样的“愚蠢”方法也会有所帮助。

编辑:根据提供的答案进行一些澄清

我的进程没有任何 GUI,所以我试图避免从任务管理器中杀死进程

我的进程是必须监视用户桌面的监督系统的客户端,因此它必须与桌面交互

编辑2:

我可以使用 Windows 服务在系统帐户下的用户会话中启动单独的进程吗(因为我的服务在系统帐户下运行)?用户可以杀死这个子进程吗?

4

4 回答 4

2

您可以使用组策略禁用任务管理器并隐藏应用程序窗口中的关闭按钮以及 [Alt+F4] 上的反应。

于 2011-07-26T08:27:32.483 回答
2

经过长时间的挖掘,我在这里找到了可以接受的答案:防止用户进程被进程资源管理器中的“结束进程”杀死

如果您以普通用户身份登录,则工作正常,您无法从 Process Explorer 中终止该进程。管理员仍然可以杀死它,因为有足够的权限。这正是我需要的

于 2011-07-27T08:51:11.787 回答
1

关闭(根)窗口并不意味着停止进程——当消息泵循环存在时,您可以使用新窗口重新启动它(显然,如果您使用的是框架,则可能有一个包装器)。

但是,如果用户拥有一个 windows 对象(如进程),他们总是可以删除(终止)它。但是,作为不同的用户运行,用户的凭据需要以一种可供当前用户运行的启动器访问的方式存储。

为了更具体地提供帮助,我认为我们需要了解原因:

因为我的进程必须与桌面交互

是一个要求。

于 2011-07-26T08:25:31.077 回答
1

从这个MSDN 博客


这就是你的做法:

通过调用获取用户令牌

WTSQueryUserToken (WTSGetActiveConsoleSessionId (), &hToken) ;     

在 CreateProcessAsUser 中使用此令牌。


您只需WTSQueryUserToken要从您的服务中调用,然后启动该过程 - 它也适用于 Windows 7!

于 2011-07-26T13:46:26.737 回答