如何在安全桌面稳定捕获屏幕?多设备异常问题求助
远程桌面服务安全桌面捕获稳定性问题排查
项目背景
正在开发一款类似TeamViewer的远程桌面服务,核心需求是稳定捕获Windows登录界面及UAC安全桌面。
已调研内容
- Windows Vista及后续版本的Session 0隔离机制
- Windows安全桌面(Secure Desktop)的运行逻辑
已测试内容
- 以Windows Service形式启动初始化进程
- 初始化进程可获取
Winlogon.exe的进程令牌,通过CreateProcessAsUser调用复制的令牌创建实际远程桌面捕获进程 - 测试多种屏幕捕获方案:
- 基于DXGI复制桌面API的WebRTC捕获方案
- 基于
GetFrontBufferData的D3D捕获方案
- 尝试在捕获前切换线程桌面:调用
OpenInputDesktop和SetThreadDesktop后再执行GetFrontBufferData
遇到的核心问题
相同程序文件与启动策略在不同设备上表现差异显著:
- 在ThinkPad(i7-10510U+UHD Graphics)和台式机(AMD 3600x+Nvidia 2060S)上,捕获功能稳定,可连续7小时以上正常捕获登录界面及UAC界面
- 在其他设备上,仅能短暂(2分钟至数小时)正常捕获,最终会出现黑屏,需杀死并重启捕获进程才能恢复
补充信息
- ThinkPad:Windows 10专业版(19044.2728)
- 台式机:Windows 10家庭版(版本号丢失)
- 其他异常设备:Windows 10专业版或Windows 11专业版
诉求
需要分析导致设备间表现差异的可能原因(硬件、系统版本、权限策略等),实现所有设备上稳定的屏幕捕获功能。若需要代码片段可提供,但代码可读性较差。
内容的提问来源于stack exchange,提问作者draght
相关产品推荐
相关产品推荐

