FileSystemWatcher处理移动文件 - 另一种解决方案

时间:2015-09-26 17:30:31

标签: file move filesystemwatcher

您好

我试图使用FileSystemWatcher来检测某些文件或目录是否已移至另一个位置。问题是,我不得不使用onCreated和onDeleted事件来处理这个问题,但是使用这个解决方案有很多问题

  • 如果我选择多个文件并按Ctrl + C,Ctrl + V或右键单击并选择复制然后粘贴到同一目录中,我怎么能检测到更改?
  • 我怎么能检测到,如果我会选择多个目录?
  • 最后一个,如果我模拟移动文件怎么办?我可以删除文件并在不同的地方创建相同的名称。

我知道我可以使用,定时器,进程锁定检测,验证哪个进程使用文件(如果explorer.exe然后它可能是移动文件),但这个解决方案并不完美,而且它非常无效。我正在唠叨如何解决这个问题,我决定用低级语言来实现它。使用C或汇编程序可以做到这一点吗?我知道使用汇编程序可以做所有事情,所以可以在asm中实现吗?我想使用汇编程序或C创建我自己的FileSystemWatcher但我应该在哪里查找信息如何执行此操作?

1 个答案:

答案 0 :(得分:0)

使用文件系统过滤器驱动程序可以轻松检测到同一文件系统中的文件移动,因为文件系统从OS接收到相应的请求。其他方案(例如移动到另一个磁盘或通过复制/删除序列移动)即使使用过滤器驱动程序也几乎无法跟踪,因为您需要在已创建/写入的文件与正在删除的文件之间进行匹配(可能在另一个磁盘)。

如果您打算编写一些安全机制(如DRM),那么我需要提醒一下,在复制过程中可以更改数据(例如加密或压缩),这会使您的任务更加困难。

您仍然可以查看文件系统过滤器驱动程序 - 如果您决定继续检测文件系统事件,这种驱动程序是比FileSystemWatcher更可靠和更强大的机制。