如何禁止普通用户终止进程

how to forbid process termination by regular user?

本文关键字:用户 终止 进程 何禁止 禁止      更新时间:2023-10-16

我不能将它实现为windows服务,因为我的进程必须与桌面交互,而这在windows 7中是被禁止的。

最简单的方法是什么?在另一个(特权)用户下启动?如何做到这一点?

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

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

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

中杀死进程

我的进程是一个监控系统的客户端,它必须监控用户的桌面,所以它必须与桌面交互

编辑2:

我可以使用一个windows服务,它将在系统帐户下的用户会话中启动单独的进程(因为我的服务在系统帐户下运行)?用户可以终止该子进程吗?

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

经过长时间的挖掘,我在这里找到了可以接受的答案:防止用户进程被"End process "from Process Explorer

如果您以普通用户身份登录,

可以正常工作,您不能从进程资源管理器中杀死该进程。管理员仍然可以杀死它,因为有足够的权限。这正是我所需要的

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

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

为了帮助更具体,我认为我们需要理解为什么:

因为我的进程必须与桌面

交互

From this MSDN blog:


你应该这样做:

通过调用

获取用户令牌
WTSQueryUserToken (WTSGetActiveConsoleSessionId (), &hToken) ;     

在CreateProcessAsUser中使用这个令牌。


你只需要从你的服务中调用WTSQueryUserToken,并启动进程-它也适用于Windows 7 !