防止屏幕截图软件捕获应用程序屏幕

4
我正在开发一套考试系统,作为系统的安全部分,我不希望任何人通过屏幕录制或使用许多免费的桌面共享应用程序来泄漏试卷。
首先,我尝试寻找是否可以阻止此类应用程序。但是我认为这样做是不可能的,因为有太多的方法可以记录/共享屏幕。然后我了解到HDCP,但我想它只适用于视频而不适用于HTML(如果我错了,请纠正我)。所以我需要像HDCP或VLC播放器的“directx video output”这样的东西,以便内容不会被屏幕截图或其他屏幕捕获技术所捕捉。
我猜D3D9 / DDraw叠加层仅适用于视频内容,我能否将其用于HTML内容/基于C#的Windows应用程序中?

不,你无法阻止人们阅读屏幕,至少我所知道的方法都不能实现。不过,你可以关闭网络。 - TheGeneral
@TheGeneral 你是在说阅读吗?我想你是指录制,但我并不是要求防止人们停止录制,我只是要求防止内容(HTML)像HDCP或VLC播放器的“directx视频输出”一样被记录。 - Amogh
我认为没有一种100%可靠的方法来做到这一点,我的意思是你可以用许多不同的方式捕捉(录制)屏幕。我唯一能想到的就是阻止那些不怀好意的人在你的电脑上安装软件,使用一个好的病毒扫描器,禁用网络。 - TheGeneral
2
如果我使用智能手机录制屏幕怎么办?您可能需要考虑一个不太软件化的解决方案:是否有人在监控学生参加考试时的情况? - jonatan
@jonatan,如果考试是中心化的,那么肯定会有监考人员来监督他们,而且在这种情况下,系统可以按照建议进行设置。由于我们也提供在线考试,因此在某些考试中,考生可以从任何地方(家庭/咖啡馆/大学校园等)参加考试(模拟)。对于基于家庭的考试,我们希望采用这种解决方案。 - Amogh
@TheGeneral 当然,考生可以通过手机拍摄图像,但是与其考虑这个问题,应用程序应该通过技术来防止可能的作弊行为。然而,我的应用程序在解决考试时使用网络摄像头进行视频录制。 - Amogh
1个回答

7

我通过使用SetWindowDisplayAffinity实现了这一点,按照MSDN的指示进行操作。

显示关联设置。该设置指定窗口内容可以显示在哪里。将此值设置为WDA_MONITOR以仅在显示器上显示窗口内容。将此值设置为WDA_NONE可删除仅限监视器的关联。

因此,将WinForm的句柄设置为WDA_MONITOR会在打印屏幕、桌面录制或桌面共享应用程序中使其变黑。

通过手机拍摄的图像:

enter image description here

然而,我对此持开放态度,如果有任何其他(更好的)答案,也欢迎提供。


请查看这篇文章,以获取更详细的说明。 - Amogh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接