捕获远程Windows服务器(Windows Vista或更高版本)上的屏幕

时间:2015-06-04 09:54:19

标签: c++ vnc vnc-server tightvnc

我的问题是关于使用Windows vista或以后从所有桌面安装的远程服务器上捕获屏幕(默认情况下,UAC屏幕,Winlogon,屏幕保护程序)。如何在没有用户本地登录或通过RDP登录的情况下实现这一目标。问题是Vista中的更改导致Windows服务与桌面隔离。我在这里和那里找到了一些解决问题的信息:

但不幸的是我没有看到任何好的解决方案。 我希望获得类似Windows远程桌面连接克隆的东西。换句话说,Windows机器有某种服务器,我可以远程连接并从中获取屏幕截图。

有一个名为 TightVNC 的软件可以满足我的需要,但它的来源是 C ++ ,所以我很难找到主要的想法如何克服Windows限制。也许有人可以说出来?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

TightVNC Server实现RFB协议。它的服务很像微软的RDP(远程桌面协议),虽然更简单。

TightVNC服务器还具有自己的编码(称为紧密),支持编码的客户端允许您指定图像压缩和质量。

了解"远程截图"没有任何协议提供给你,就像你想象的那样。发送图形更新,您应该管理图像帧缓冲并继续更新(尽管您可以要求远程VNC服务器每次都向您发送完整更新,但即便如此,服务器也会分解&# 34;图像"在发送之前进入各种rects)。 RDP客户端相当复杂(参见FreeRDP项目)。

但是,如果没有Microsoft RDP,您的目标似乎是远程访问。在这种情况下,您只需在远程桌面上使用VNC服务(如TightVNC),并在您要连接的系统上使用VNC客户端(如TightVNC客户端)。除非网络配置,你应该好好去。

答案 1 :(得分:0)

您可以从模拟已登录用户的服务启动进程(exe)。这允许您进行屏幕捕获。

您需要一个单独的应用来捕获屏幕,因为它必须在新流程中启动。

有关详情:https://stackoverflow.com/a/45095509/125406