这个问题是:要监控指定的文件夹,如C:\Windows,当任意程序在此文件夹打开,读取,写入,删除,新建操作时都能被我的程序监控到,并且我的程序能够根据用户要求终止非法程序的操作,甚至是杀死非法程序的进程,似乎这有点难度,对吗?还有,请不要用驱动层来解决,这对我来说太难了.用API就OK.谢谢.解决送多分,顶有分.

解决方案 »

  1.   

    我收藏中有一个,不知是否符合你要求:
    如何实时监视硬盘上有文件被删除和生成\修改、重命名等? 
    http://community.csdn.net/Expert/topic/2874/2874935.xml?temp=.5237238
      

  2.   

    一个简单方法是用FindFirstChangeNotification/FindNextChangeNotification
    做之前先遍历一边目录下的文件,记录下来,用上面的函数,当发现有变化时,开线程再遍历一边目录,对比发现有哪些文件变化,比较容易实现,就是比较烦。好处是可以循环的来监视另外还有一个就是用ReadDirectoryChangesW,来监视一个目录,缺点是不能循环操作,你必须自己来反复使用ReadDirectoryChangesW,好处是可以直接得到变化的文件名字。第3个方法是使用SHChangeNotifyRegister注册一个自定义消息,文件变化了你会收到消息。这个用起来比较麻烦,复杂一些了。可以直接知道变化的文件名字。
      

  3.   

    我还要知道谁动了我的文件,比如说有人用资源管理器打开这个文件夹,我希望知道是explore.exe打开了我的文件夹,如果然后我可以把这个explore.exe进程杀死来达到禁止查看文件夹内容的目的.这样才能真正达到我的要求.非常感谢前面两个大侠...你们的分我先记着,结贴再算,哈哈.谢谢,
      

  4.   

    不仅仅是要知道变化的文件的名字啊,我是要知道哪个程序动了我的文件啊,比较是不是exproler.exe啊,就是要知道进程名字.