Вы делаете правильную вещь с FileSystemWatcher
. Windows не имеет встроенного механизма для надежного представления отчетов.
Вы можете подключить подпрограмму копирования ОС, но это не гарантирует хороших результатов: приложения могут свободно выполнять свою собственную копию, просто открывая исходные и целевые файлы и копируя байты.
Переименование отличается тем, что переименование, выполняемое ОС, невозможно легко передразнить с помощью других средств, поэтому вы сможете перехватить все переименования с помощью FileSystemWatcher
. Обратите внимание, что перемещение между дисками больше похоже на копирование: вы не получите переименованное уведомление, а вместо этого создаёте и удалите.
Так что, если вы действительно должны заметить файл получать скопировал мой предложенный подход заключается в следующем:
- Hook на
CloseFile
звонки, в дополнение к FileSystemWatcher
.
- Всякий раз, когда файл закрывается, это может быть связано с тем, что это источник или цель перемещения копирования/перекрестного перемещения. Проверьте его размер.
- Если вы обнаружили два закрытых файла с одинаковым размером в течение достаточно короткого периода времени, сравните контент. Довольно ресурсоемкий, но единственный надежный способ сделать это.
Можете ли вы посмотреть на экземпляр буфера обмена вместо этого? Просто мысль. http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx –
Насколько хорошо вы можете терпеть отказ отслеживать копию? Вы, вероятно, можете отслеживать _most_ копии (например, сделанные через Explorer), но некоторые проскальзывают. –
Почему вы пытаетесь это сделать? – RQDQ