我正在尝试用C#编写一个应用程序,我可以检测另一个应用程序是否正在Windows中捕获屏幕视频。我可以查看进程列表并检测特定进程是否正在运行但是效率不高,因为可以更改捕获应用程序的进程名称。任何人都可以告诉我有没有办法做到这一点?谢谢!
答案 0 :(得分:3)
如果您要做的就是检测同一台计算机上的进程是否正在录制屏幕,您可能会找到一种方法来执行某些操作。许多屏幕录制软件都使用某些API,您可以使用EasyHook或类似的东西拦截这些API,但是你会错过其他以不同方式工作的API。
例如,UltraVNC有一个镜像视频驱动程序可供您安装,它可以为您提供屏幕更新的通知以及对视频帧缓冲的直接访问,这对于屏幕录制或重铸非常有用。您的代码将如何应对?更大的问题是,仅扫描本地计算机不足以保护您的应用程序不被记录。您可以通过混合各种技术(如硬件覆盖和HDCP)来使输出变得更加困难。
当然最大的问题是没有办法阻止某人将相机对准显示器。
您最终将花费大量时间在开发上,最终结果是没有太多安全性......并且给最终用户带来一些不便。有人决定打败它只需要为你的应用程序做一些代码补丁,或者指向一个正确方向的手机摄像头,并且它是再见安全。
对我来说似乎很傻。
答案 1 :(得分:0)
可以更改流程名称;但你不能改变主窗口标题"。 您可以在运行时考虑众所周知的屏幕捕获程序主窗口标题。