是否可以将程序标记为“始终可以访问桌面”(或其他内容),以便 Windows 不会不断抛出交互式服务检测消息?
答案1
发生这种情况的原因是由于 Vista 以来服务的会话分离。
服务存在于会话 0 中,所有登录都从会话 1 开始。这可以防止用户会话中的内容在同一会话内跳转到系统级服务进程。
这被称为“粉碎攻击“。
由于您要做的正是违反 Windows 的核心安全功能,因此我会说不,没有办法做您想做的事情(在 Windows 7 中)。
相反,真正的答案是将触发交互式服务检测的任何服务替换为专为 Vista+ 而设计的服务;该服务不期望用户会话与服务位于同一会话中。
答案2
是的,有时。作为长期解决方案,Techie007 是正确的,您应该获得新的服务/支持包。笨拙的解决方法确实存在。
如果您可以控制服务的 GUI 部分的启动方式,例如,如果您使用 srvany 作为包装器,则可以使用 PsExec 之类的工具强制 GUI 进入另一个会话,从而绕过交互式服务检测。通常,您会希望将 GUI 移至会话 1,但并非总是如此。