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 и создать новые события для чтения медиа-файлов, а затем запустить их.

Другие вопросы по тегам