Windows 服务锁屏

Windows Service LockScreen

提问人:Happy Hobbyist 提问时间:10/17/2023 最后编辑:genpfaultHappy Hobbyist 更新时间:10/17/2023 访问量:81

问:

我有一个 Windows 服务来寻找触发情况。如果找到一个,它将锁定当前处于活动状态的用户的屏幕/注销。这通常是不可能的,因为服务无法正确运行需要交互式环境的函数。

为了解决这个问题,我制作了帮助程序,然后使用 CreateProcessAsUser 调用它们。这对我来说效果很好,到目前为止还没有任何问题。

在另一台计算机上尝试此操作时,我遇到了组策略问题。在调用 CreateProcessAsUser 并返回错误之前,一切都有效。错误为“组策略禁止执行”。管理员可以启动 .exe 文件,但普通用户不能。因此,当普通用户是启动帮助程序的人时,它会中断,因为它无权这样做。

一直在和一些朋友交谈,大多数人说应该可以从会话 0 权限开始并完全跳过这个问题。但据我所知,这在设计上是不可能的。因为如果安全性较低的用户可以在较高安全模式下的服务运行进程的帮助下,它可能会造成破碎攻击和其他问题。

我能做些什么来解决这个问题吗?

C++ WinAPI 服务 Windows-Services 组策略

评论

1赞 500 - Internal Server Error 10/17/2023
FWIW,我认为阻止您的服务执行此操作的组策略正在执行您引用的原因。
0赞 Happy Hobbyist 10/17/2023
不过,想知道是否有某种神奇的方法可以解决这个问题,或者它是否完全死在水中。我对 GP 知之甚少,也不知道如何做到这一点。
0赞 MSalters 10/17/2023
您的服务本身不会使用足够的凭据运行吗?但我确实想知道是谁对组策略管理不善,以至于您无法运行可执行文件,但可以安装新服务(!
0赞 Jeaninez - MSFT 10/18/2023
我建议您可以尝试使用 CreateProcessWithLogonW 而不是 .CreateProcessWithLogonW 不需要任何特殊权限,但必须允许指定的用户帐户以交互方式登录。CreateProcessAsUser
0赞 Happy Hobbyist 10/18/2023
@Jeaninez - MSFT,相当确定它不会起作用。问题还在于锁定、注销等需要交互式会话。为什么我不能从会话 0 开始做。如果我使用 LogonW,我确定它不会在当前登录的用户交互式会话下运行。

答: 暂无答案