如何在安全桌面上截屏?在不同的设备上得到了一些奇怪的事实

问题描述 投票:0回答:0

我要实现像 TeamViewer 这样的远程桌面服务。

我已经调查过的内容:

  • session 0 与 Vista 隔离

  • Windows 中的安全桌面。

我已经测试过的内容:

  • 作为 Windows 服务启动的启动过程。

  • 启动进程可以得到Winlogon.exe进程的进程Token,用复制的token调用CreateProcessAsUser创建真正的远程桌面进程。

  • 尝试了不同的捕获方法:webRTC,它使用重复的桌面API(DXGI); D3d,它使用 GetFrontBufferData。

  • 在截屏之前尝试切换桌面。例如,我在调用 GetFrontBufferData 之前调用了 OpenInputDesktop 和 setThreadDesktop。

我有什么问题:

相同的二进制文件和启动策略在不同的设备上得到不同的结果。在我的thinkpad(i7-10510U+UHD Graphics)和我的桌面(AMD 3600x+Nvdia 2060S)上,屏幕截图是预期的,我可以长时间获得登录屏幕和UAC屏幕(我测试了一晚上,在至少超过 7 小时)。然而,在其他设备上,结果却大不相同,其中一些设备可以捕获登录屏幕或 UAC 屏幕片刻(从 2 分钟到几个小时),但最后会出现黑屏。恢复的唯一方法是杀死屏幕捕获进程并重新启动它。

补充:我的thinkpad是Windows10专业版(19044.2728),我的桌面是Windows10家庭版(版本号丢了抱歉)。其他设备为Windows10专业版或Windows11专业版

我真的不明白是什么导致了这样的差异。硬件?还是系统版本?还是权威政策?

寻找任何可能的原因。

如果需要代码,我会粘贴它,但我的代码不是很可读:(

我已经在上面谈到了我的尝试。我期待的是屏幕捕获功能可以在每个设备上正常工作。

windows screenshot remote-desktop winlogon
© www.soinside.com 2019 - 2024. All rights reserved.