据我所知,当我们启动 windows 时,它会启动 session 0,它不连接到任何 GUI 等,并运行所有 windows 服务。所以我的任务是,在 Windows 启动后,模拟 Windows 输入以选择用户并登录到 session 。我知道要从服务发送输入,我应该运行桌面应用程序并通过它发送输入、显示 GUI 等等,但是在任何用户 session 开始之前我该怎么做呢? (例如我看到 TeamViewer 可以做到)
最佳答案
WTSGetActiveConsoleSessionId()将告诉您哪个 session 附加到物理控制台。
然后您可以使用 DuplicateTokenEx() 复制您的安全 token , 使用 SetTokenInformation() 更改新 token 的 session 和 TokenSessionId
选项,并使用 CreateProcessAsUser() 启动进程.
然后新进程应该在正确的 session 中运行,但它可能还需要将自身附加到正确的桌面,然后才能与登录界面交互。您可以使用 EnumDesktops()列出可用的桌面,并反复试验以确定登录界面在哪个桌面上运行。(请注意,这在不同版本的 Windows 中可能有所不同。)
关于windows - 从 Windows 8 中的 Windows 服务( session 0)向登录屏幕发送输入或类似内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28611392/