2012-02-11 3 views
1

Я доставляю содержимое мультимедиа в клиентскую систему (загрузка из Интернета) и хочу подтвердить, был ли файл мультимедиа открыт (и просмотрен) оператором. Я использую наблюдателя файловой системы (C# 3.5) для проверки последнего времени доступа к файлу (поэтому всякий раз, когда воспроизводится медиафайл, я должен получить событие), и я отправляю подтверждение.Последний доступ FIleSystemWatcher (чтение) для медиафайлов не работает

Я включил последнее время доступа в реестре моей машины Windows 7 here и перезагрузил мою систему. Наблюдатель файловой системы запускает события в каталоге, но не в режиме воспроизведения мультимедиа.

Вот мой код:

Вы также можете загрузить мой пример кода из here.

Пожалуйста, расскажите мне, как лучше всего это достичь? Мне нужно получить последнее время доступа (когда когда-либо видео или аудио или изображение или .swf-файл был воспроизведен любым игроком)?

ответ

0

FileSystemWatcher используется для просмотра изменений в указанном каталоге. Вы можете следить за изменениями в файлах и подкаталогах указанного каталога. В вашем случае изменений в медиафайлах не происходит. Я бы предложил попробовать расширить класс FileSystemWatcher и создать новые события для чтения медиафайлов, а затем запустить эти события.

+0

Спасибо. Я могу наследовать класс FileSystemWatcher и создавать свои собственные события и запускать их. Но как я узнаю, изменилось ли последнее время доступа (чтение) любого файла (например, медиафайлы)? Должен ли я проверить его с помощью таймера и FileInfo (что не будет хорошим способом, так как мне придется очень часто запускать таймер и проверять его)? Пожалуйста, предложите. – akshaymishra14

+0

Я бы посоветовал при чтении файлов, в вашем случае изменение носителей там атрибута ReadOnly файла, например. установите ReadOnly в true или false, как показано ниже, 'code'File.SetAttributes (filePath, FileAttributes.ReadOnly); –

2

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

Машина должна иметь LastAccess успешно активировали с помощью следующей команды

fsutil behavior set DisableLastAccess 0 

, как отмечалось в этом вопросе.


* - во время этого поста, с помощью Windows Server 2012 R2

+0

Спасибо большое :) Я попробую. Для соответствующего проекта я изменил нашу логику на предоставление зашифрованных файлов и на запросы дешифрования я записываю временную метку. – akshaymishra14