我一直在互联网上寻找答案,但似乎没有直接回答,所以我想我会问。
案例场景:我想截取当前在计算机屏幕上的内容。如果是 Windows 登录屏幕,我希望它是那样。如果它是活动用户的桌面,我想成为那个。如果用户提升了他们的应用程序,并且出现了 UAC 提示,我希望它就是这样。
根据大量阅读和反复试验,我目前的设置如下:
- 程序作为 Windows 服务运行
- 获取活动用户的令牌
- 使用用户的令牌运行 CreateProcessAsUser 以生成其自身的另一个实例
- 截取屏幕截图并通过管道传回。
现在这对于登录用户来说非常有用,除了启用 UAC 提示时屏幕截图是黑色的。
此外,这种方法显然不适用于获取登录屏幕。
从根本上说,我想知道 TeamViewer 究竟是如何实现这种目标的?它能够完美地在登录屏幕和用户会话之间切换,同时还捕获 UAC 提示。我非常好奇它是如何做到这一点的。
感谢大家!