从Windows 8中的Windows服务(会话0)发送input或类似的内容到login屏幕

据我所知,当我们启动Windows时,它启动会话0,它不连接到任何GUI等,并运行所有的Windows服务。 所以我的任务是,Windows启动后,模拟窗口inputselect用户和login到会话。 我知道,从服务发送input我应该运行桌面应用程序,并通过它发送input,显示graphics用户界面等,但我怎么能在任何用户会话开始之前呢? (例如,我看到TeamViewer可以做到这一点)

WTSGetActiveConsoleSessionId()会告诉你哪个会话连接到物理控制台。

然后,您可以使用DuplicateTokenEx()复制安全性令牌,使用SetTokenInformation()和TokenSessionId选项更改新的令牌会话,并使用CreateProcessAsUser()启动进程。

然后,新的进程应该在正确的会话中运行,但是它可能还需要将自己附加到正确的桌面,才能与登录界面进行交互。 您可以使用EnumDesktops()来列出可用的桌面,以及试验和错误来确定运行登录界面的哪一个(注意,这可能在不同版本的Windows中有所不同)。