windows - 从 Windows 8 中的 Windows 服务( session 0)向登录屏幕发送输入或类似内容

标签 windows winapi service windows-8 rdp

据我所知,当我们启动 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/

相关文章:

windows - 更改 solaris 网络超时

c++ - Win32 C++ BitBlt 栅格方法和透明度

用于 TCP 套接字的 Android 服务

java - 使用 Intent 标志和 androidmanifest

python - 在 win32 上为 django 提供服务的生产就绪服务器

python - 为什么 python windows 安装程序使用旧版本的 pip 进行分发?

python - 由于 cffi.api.CDefError 无法使用 pyinstaller

c++ - 宏等于函数?

c++ - 如何在Windows composer中集成Qt无框窗口? (系统快捷方式不起作用)

java - android studio java web服务每45秒控制一次