我现在想在windows系统下做一个程序,对我的共享文件进行监视,要能知道都有谁正在复制我的文件,或者察看我的文件内容和文件属性????我在网上看见过有文件监视的,现在想自己做一个,请问具体是怎么实现的啊?〉

解决方案 »

  1.   

    需要写过滤驱动程序的。
    可以看看filemon
      

  2.   

    filemon有windows上的源代码吗?
      

  3.   

    search in http://www.sysinternals.com/
      

  4.   

    http://www.csdn.net/Develop/Read_Article.asp?Id=408
      

  5.   

    NetSessionEnum
    NetSessionGetInfoNetShareEnum
    NetShareGetInfoNetFileEnum 
    NetFileGetInfo
      

  6.   

    Win98 下有个共享监视器,另外有些hostids软件有这样的功能,还有一个好用的 NetBlock 功能比共享监视器强
      

  7.   

    实现文件监控的最基本思想是:利用FindFirstChangeNotification
    创建一个监控句柄,然后利用WaitForMultipleObjects来监视文件是否发生变化(循环判断文件的更新时间是否发生变化)。HANDLE FindFirstChangeNotification(
      LPCTSTR lpPathName,    // pointer to name of directory to watch
      BOOL bWatchSubtree,    // flag for monitoring directory or 
                             // directory tree
      DWORD dwNotifyFilter   // filter conditions to watch for
    );DWORD WaitForMultipleObjects(
      DWORD nCount,             // number of handles in the handle array
      CONST HANDLE *lpHandles,  // pointer to the object-handle array
      BOOL fWaitAll,            // wait flag
      DWORD dwMilliseconds      // time-out interval in milliseconds
    );具体请参阅msdn
      

  8.   

    http://expert.csdn.net/Expert/topic/2016/2016963.xml?temp=.3099176
      

  9.   

    apcad 的回答针对的是楼主的标题,但看看内容就知道楼主的需求不是对“文件监控”,而是“网络共享的文件监控”。
      

  10.   

    NetSessionEnum是实现该功能的核心函数,不过要注意使用中要事先定义为UNICODE.
      

  11.   

    >必须需要拦截的话
    >当然对我的文件进行复制时候,就自动弹出一个窗口让我确认了,对方才能进行复制我原来仔细看过 NetBlock 这个 shareware 的功能,我认为它就是定时刷新的方式使用 NetSessionEnum 和 NetFileEnum NetShareEnum 获得“实时”的共享和连接情况。对你说的情况其实就是当发现有新的“连接”或者访问的时候提示用户,并在用户要求断开连接的时候用
    NetSessionDel 或 NetFileClose/NetFileClose2
    来实现。
      

  12.   

    这几个函数的例子源代码在 MSDN 里面有
    这里有很多例子
    http://www.mvps.org/win32/index.html
    看看左边那一帧,呵呵
      

  13.   

    piggybank(吞硬币的小猪) :
    的确是这样的,我发了以后才发现说的有点驴唇不对马嘴,不好意思了!
    *^_^*
      

  14.   

    看到那些例子了么?思路上面我也说了,有空的话我也写一个玩玩——不过我要做成特殊接口的 dll 用在 mIRC 里 x)WNet*() 的 API 也能实现同样的功能,你可以看看 MSDN,也有例子,我用WNetAddConnection做过一个简单的NullSessionScanner,呼呼