当一个运行为windows服务的应用程序(作为localsystem)将显示一个模式警告(类似于shutdown屏幕或uac警告屏幕)时,我希望实现一个特性。基本上,一些不可能忽视的事情
有两件事我不知道如何实施:
据我所知,windows vista+不再允许应用程序生成系统模式的窗口。有没有可能绕过它,有没有什么简单的方法可以做到这一点?我唯一能想到的办法就是打开一个全屏窗口,截取alt+tab、ctrl+alt+del等等
我还认为,不可能在服务的用户会话中显示ui,因为它在另一个会话中运行。有没有一种黑客可以绕过它?我能想到的一件事是:找到在给定会话中运行的csrss.exe或winlogon.exe并将代码注入其中,然后调用远程线程。另一种方法是obtain handle to winlogon and CreateProcessAsUser()。还有其他更简单的方法吗?
最佳答案
如果服务作为本地系统运行,WTSQueryUserToken是获取令牌以在给定会话中运行代码的最简单方法。
考虑创建一个新的桌面(CreateDesktop)并切换到它,而不是一个模式窗口。您不能取消控制alt delete,但我相信当取消控制alt delete菜单时,系统通常会返回桌面。所有其他特殊的键序列都应该被禁止,因为钩子只影响与安装它们的应用程序相关联的桌面。
关于windows - 绕过Windows session 隔离,在Windows 7+系统服务的用户 session 中显示警告消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16366002/