使用.NET在Windows中检测屏幕录制

4

我正在尝试使用C#编写一个应用程序,可以检测Windows中是否有另一个应用程序在捕获屏幕视频。我可以查看进程列表并检测是否运行了特定进程,但这不是有效的方法,因为捕获应用程序的进程名称可能会更改。请问是否有任何方法可以实现这一点?谢谢!


1
这篇帖子中的一些答案可能对您有用:http://stackoverflow.com/questions/6083261/tracking-screen-recorder-in-windows-app?rq=1 - ravuya
不行 - 如果是远程桌面或其他形式的可视化视频卡呢?唯一可能接近防止未经授权的录制的是HDCP - Alexei Levenkov
@ravuya,感谢您的回复。我尝试查看了那个帖子,但没有具体提到任何内容。 - user3566885
@AlexeiLevenkov,感谢您的回复。HDCP是专有技术,因此可能无法使用... - user3566885
2个回答

4
如果你只是想检测同一台电脑上的进程是否正在录制屏幕,你可能可以找到一些方法来做到这一点。有一些API被许多屏幕录制软件使用,你可以用EasyHook或类似的东西拦截它们,但你会错过那些工作方式不同的API。
例如,UltraVNC有一个镜像视频驱动程序,你可以安装它,它会给你屏幕更新的通知以及对视频帧缓冲区的直接访问权限,这对于屏幕录制或重播非常有用。你的代码将如何应对这种情况?
更大的问题是,仅仅扫描本地机器是不足以保护你的应用免受录制的。你可以通过混合使用各种技术,如硬件叠加和HDCP输出,使其更加困难。
当然,最大的问题是没有办法阻止别人把相机对准他们的显示器。
你最终会花费很多时间在开发上,但增加的安全性并不太多...而且还会给你的最终用户带来一些不便。而那些决心打败它的人只需要对你的应用进行一些代码补丁,或者将手机相机对准正确的方向,安全就不复存在。
在我看来,这似乎很荒谬。

谢谢回复,有关于如何使用这些API的文档吗? - user3566885

1
进程名称可以更改;但您无法更改“主窗口标题”。 您可以在运行时考虑众所周知的屏幕捕获程序的主窗口标题。

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