2015-04-16 2 views
0

Я работаю в Windows Forms App (C#), который содержит проигрыватель Windows для воспроизведения зашифрованного видео, то есть из-за цели безопасности приложение должно расшифровать видеофайл, а затем воспроизвести его с помощью носителя игрокКак предотвратить запись экрана

проблема сейчас, если один играть в видео, а затем запустить любое приложение для записи экрана, чтобы он мог легко получить видео

так, вопрос: как предотвратить запись экрана во время моего приложения бежит?

+0

Не будет ли это работой компонента Windows Media Player? Я имею в виду, что уровень безопасности должен соблюдаться на системном уровне, а не на уровне приложения, иначе кто-то может сделать плеер, который также захватит экран для копирования защищенного контента. Вы наблюдали это в действии или вы просто спекулируете? –

+4

Вы не можете. Даже если бы вы могли, пользователь мог просто взять физическое видео на свой экран. Если видео воспроизводится на компьютере, к нему можно получить доступ. – Doorknob

+0

Я не уверен, @Doorknob. На более медленных компьютерах я перетащил окно просмотра видео по экрану только для того, чтобы увидеть видеоконтент, отстающий от большого черного прямоугольника в окне, которое я перетаскивал. Он сказал мне, что видеоконтент идет по другому пути к экрану, чем другие компоненты пользовательского интерфейса в окне. –

ответ

6

Короткий ответ: вы не можете. Даже если вы каким-то образом вынудили Windows запретить любому приложению записывать экран, по-настоящему выделенный пользователь мог просто указать на свое устройство запись устройства (и действительно выделенный пользователь мог бы определить его каким-то другим способом). Если вы покажете это своим пользователям, вам просто нужно будет верить, что они будут играть честно с ним.

Другая часть этого: вы, вероятно, не должны беспокоиться об этом. Для того, чтобы экранный рекордер выполнял разумную работу по захвату видео, требуется много ресурсов для обработки и памяти. Средний компьютер будет нелегко справляться с дешифровкой, декодированием, воспроизведением и записью видео одновременно - и средний пользователь будет слишком расстроен, даже если они думают попробовать.

Вы можете попытаться сделать это немного сложнее, глядя на популярные продукты для записи на экране и отказываясь воспроизводить видео, если этот процесс работает (или установлен?). Это не будет надежным, но это будет еще один сдерживающий фактор, например.

Process [] skypes = Process.GetProcessesByName("skype.exe"); 
Process[] otherRecorders = Process.GetProcessesByName("recorder.exe"); 

if (skypes.Length > 0 || otherRecorders.Length > 0) // don't play 

Конечно, это все еще осложняется возможностью этих процессов, запущенных под разными учетными данными, что ваше приложение не может получить доступ (требуется приложение для работы в качестве администратора?), И некоторые процессы будут иметь странные имена (например, приложение Windows Store для Windows).

+0

Хорошие моменты, Дэн, но не забывайте, что Skype, GoToMeeting и другие приложения для проведения телеконференций имеют параметр «поделиться своим экраном», который работает с воспроизведением видео. Да, кадры иногда отбрасываются, но это не так сложно, я полагаю. –

+1

Правильно, поэтому Skype, GoToMeeting и т. Д. Могут быть процессами, которые вы ищете, прежде чем разрешить воспроизведение видео. Но опять же, это, вероятно, не стоит. –

Смежные вопросы