利用之前Windows API知识,可以实现目录监控的功能,实际上我也实现了,但是如文中所述,当指定目录下操作过多时,会损失部分通知。多少算多呢,解压一个eclipse开发环境的压缩包到监控目录下,相当于短时间内在目标文件夹中创建了数千个文件,结果几乎任何信息都没收到,所以,原本的程序在这种情况下局限性还是很明显的。

考虑到监控性能改进,还可以使用:

1.分析Change Journal的办法,前提是系统开启了这个功能;

2.写Windows文件驱动,据说是个痛苦的过程;

我猜一定有这样的工具。果然,找到了Process Monitor,这个工具非常强大,可以监控Windows系统的注册表、进程、文件系统、网络等各方面的信息,具体的用法不妨看看帮助,不复杂。

下面说说我如何用它来监控目录。

工具启动后会监控系统所有的活动,大部分信息都不需要,所以需要设置过滤器,此工具的灵活性都体现于此。


监控写入文件 监控文档一般存在哪里_文件系统

主语+谓语+宾语,构成条件句,包含或者不包含,可以通过下拉列表随意选择内容进行组合,简单而强大。

要监控某个目录下的情况,首先,选择只显示文件系统的信息,


监控写入文件 监控文档一般存在哪里_Windows_02

然后,设定需要监控目录的条件,


监控写入文件 监控文档一般存在哪里_文件系统_03

Path条件就可以了,但信息还是太多,还需要进一步过滤,其中:

WriteFile:表示写操作,依照文件大小可能产生多条;

ReadFile:表示读操作,一次读会产生很多条;

SetAllocationInformationFile:改写文件时触发;

SetEndOfFileInformationFile:改写文件时触发;

SetRenameInformationFile:重命名时触发;

SetDispositionInformationFile:删除文件时触发。

 

OK,有这些操作的排列组合,就可以监控某个目录下文件的创建、修改、删除、访问操作了。保存日志为文件,以便日后分析。