利用之前Windows API的知识,可以实现目录监控的功能,实际上我也实现了,但是如文中所述,当指定目录下操作过多时,会损失部分通知。多少算多呢,解压一个eclipse开发环境的压缩包到监控目录下,相当于短时间内在目标文件夹中创建了数千个文件,结果几乎任何信息都没收到,所以,原本的程序在这种情况下局限性还是很明显的。
考虑到监控性能改进,还可以使用:
1.分析Change Journal的办法,前提是系统开启了这个功能;
2.写Windows文件驱动,据说是个痛苦的过程;
我猜一定有这样的工具。果然,找到了Process Monitor,这个工具非常强大,可以监控Windows系统的注册表、进程、文件系统、网络等各方面的信息,具体的用法不妨看看帮助,不复杂。
下面说说我如何用它来监控目录。
工具启动后会监控系统所有的活动,大部分信息都不需要,所以需要设置过滤器,此工具的灵活性都体现于此。
主语+谓语+宾语,构成条件句,包含或者不包含,可以通过下拉列表随意选择内容进行组合,简单而强大。
要监控某个目录下的情况,首先,选择只显示文件系统的信息,
然后,设定需要监控目录的条件,
Path条件就可以了,但信息还是太多,还需要进一步过滤,其中:
WriteFile:表示写操作,依照文件大小可能产生多条;
ReadFile:表示读操作,一次读会产生很多条;
SetAllocationInformationFile:改写文件时触发;
SetEndOfFileInformationFile:改写文件时触发;
SetRenameInformationFile:重命名时触发;
SetDispositionInformationFile:删除文件时触发。
OK,有这些操作的排列组合,就可以监控某个目录下文件的创建、修改、删除、访问操作了。保存日志为文件,以便日后分析。