FIleSystemWatcher последний доступ (чтение) для медиа-файлов не работает
Я доставляю мультимедийное содержимое в клиентскую систему (загрузка из Интернета) и хочу подтвердить, что мультимедийный файл был открыт (и просмотрен) оператором. Я использую средство просмотра файловой системы (C# 3.5), чтобы проверить время последнего доступа к файлу (поэтому, когда воспроизводится медиафайл, я должен получить событие), и я отправляю подтверждение.
Я включил время последнего доступа в реестр моей машины с Windows 7 и перезагрузил систему. Наблюдатель за файловой системой запускает события в открытой директории, но не в медиа-проигрывателе
Вот мой код:
private FileSystemWatcher fsWatcher = null;
private static Object objLock = new Object();
private void StartAccessWatcher(string _folderPath)
{
fsWatcher = new FileSystemWatcher(_folderPath, "*.*");
fsWatcher.Changed += new FileSystemEventHandler(fsWatcher_Changed);
fsWatcher.IncludeSubdirectories = true;
fsWatcher.NotifyFilter = NotifyFilters.LastAccess;
fsWatcher.EnableRaisingEvents = true;
}
private void fsWatcher_Changed(object sender, FileSystemEventArgs e)
{
lock (objLock)
{
fsWatcher.EnableRaisingEvents = false;
DisplayMessage(string.Concat(e.ChangeType, " ", e.FullPath));
fsWatcher.EnableRaisingEvents = true;
}
}
private void btn_StartWatcher_Click(object sender, EventArgs e)
{
StartAccessWatcher(@"E:\Surewaves\Media-Store\MP1 Videos");
}
Вы также можете скачать мой пример кода здесь.
Скажите, пожалуйста, как мне лучше всего этого достичь? Мне нужно получить последнее время доступа (когда-нибудь проигрыватель видео, аудио, изображения или.swf проигрывался любым плеером)?
2 ответа
В качестве обновления к этому трехлетнему вопросу данный код теперь корректно работает * с видео, воспроизводимыми на локальной машине.
На компьютере должен быть успешно включен lastAccess с помощью следующей команды
fsutil behavior set DisableLastAccess 0
как отмечено в вопросе.
* - на момент написания этой статьи, используя Windows Server 2012 R2
FileSystemWatcher используется для отслеживания изменений в указанном каталоге. Вы можете следить за изменениями в файлах и подкаталогах указанного каталога. В вашем случае нет никаких изменений в медиа-файлах. Я бы предложил попробовать расширить класс FileSystemWatcher и создать новые события для чтения медиа-файлов, а затем запустить их.