哪位高人能指点一下如何对文件系统进行实时监控,我查了有findfirstchangenotification,findnextchangenotification,findclosechangenotification,waitforsingleobject,readdirectorychangeW(),但这几个函数好象只能对指定目录或指定文件进行监控,如何能对整个磁盘文件系统的变化进行实时监控,不知哪位大哥有好方法,我也看了网上有人说要用apihook,vxd等方面的技术,但泛泛而谈,我的水平领悟不了。如果哪位大哥肯给小弟讲讲,我当感谢不尽。

解决方案 »

  1.   

    除了HOOK 好像没有别的办法了因为没有 API 可以判断 某线程使用某文件
      

  2.   

    这位大哥,可以说得具体一些吗,如何利用hook来监控,可以拦截到所有的磁盘文件操作吗
      

  3.   

    FindFirstChangeNotification(..) 试试
      

  4.   

    FindFirstChangeNotification(..) 这个好象只能对指定目录或指定文件进行监控啊
      

  5.   

    顶一下
    应该是hook
    因为文件读写与硬盘驱动打交道的
    可以当中产生的请求包
      

  6.   

    http://dev.csdn.net/develop/article/29/29184.shtm
      

  7.   

    感谢大哥,但好象SHChangeNotifyRegister和SHChangeNotifyDeregister也只能针对具体的指定的文件夹或文件,而且不能拦截。不知是不是我对它还不够了解。
      

  8.   

    api 拦截等
    或用文件驱动
      

  9.   

    读文件是什么消息来的,我还真不知道,你可以用SPY++ 监视一下程序,看当读文件的时候出现什么消息,然后你的程序用全局钩子对此消息进行处理就行了
      

  10.   

    呵呵,这个我做过,对所有硬盘上的文件进行实时监控(增删改...),用readdirectorychangeW,就完全可以了。效率也很高。但是这个函数只能在win2000以上的系统中可以使用。你可以借鉴http://www.vckbase.com/document/viewdoc/?id=814 这个例子
    如果要在win98上实现这个功能,就只能用findfirstchangenotification,findnextchangenotification 这几个函数了