如何通过File monitoring实现软件内部文件使用情况追踪
Windows环境下定向目录文件访问追踪方案
针对指定目录下文件访问主体、时间统计,识别冗余文件支撑技术栈迁移的需求,直接用以下两类可落地方案即可,不需要采购重型运维工具:
方案一:NTFS系统原生审计(无额外依赖,适合长期统计)
这是稳定性最高、不会和业务程序产生兼容性问题的方案,全程用系统自带能力实现:
- 配置目录审计规则:找到
C:\myprogram文件夹,右键进入「属性-安全-高级-审计」页,添加审计对象为Everyone,应用范围选择「此文件夹、子文件夹和所有文件」,勾选成功类的「遍历文件夹/执行文件」「读取文件/读取属性」权限即可,不需要全开权限,避免产生大量无效日志。 - 开启系统审计策略:运行
gpedit.msc打开本地组策略,定位到「计算机配置-Windows设置-安全设置-本地策略-审核策略」,开启「审核对象访问」的成功事件记录,配置完成后不需要重启系统,规则即时生效。 - 日志查询统计:打开事件查看器,筛选安全日志中事件ID为
4663的条目,每条记录都包含访问目标文件路径、访问用户账号、精确到秒的访问时间、访问行为类型。直接将日志导出为CSV格式,用PowerShell或表格工具过滤出C:\myprogram路径下的记录,就能快速统计每个文件的访问频次。
踩坑提示:默认系统安全日志的存储空间上限只有几十MB,很容易被新日志覆盖,配置完规则后一定要把安全日志的最大大小调整到1GB以上,日志覆盖规则设置为「按需覆盖旧事件」,保证至少1-2个完整业务周期(建议覆盖1个月,包含月度定时任务、峰值业务场景)的日志不会丢失。
方案二:轻量监控工具(适合快速部署、不想修改系统配置的场景)
如果不想修改系统审计策略,直接用微软官方的Process Monitor即可:
- 启动工具后添加两条过滤规则:
路径 包含 C:\myprogram、操作 为 CreateFile,再排除掉杀毒软件、系统索引服务这类非业务进程的访问记录,后台静默运行即可。 - 工具会自动记录所有符合规则的文件访问行为,包含访问用户、访问时间、发起访问的进程、目标文件路径,统计周期结束后直接导出日志做频次统计即可。如果需要长期运行,配置工具开机自启、按大小自动分割保存日志就行,内存和CPU占用极低,不会影响业务程序正常运行。
冗余文件判定注意事项
- 统计周期必须覆盖完整业务场景,不要仅统计3-5天的工作日数据就下结论,避免漏掉低频但核心的定时任务、特殊业务流程的文件调用。
- 统计时要过滤掉非业务进程产生的访问记录,比如杀毒扫描、磁盘碎片整理、系统文件索引产生的访问都不能算有效使用。
- 对完整统计周期内无任何有效业务访问记录的文件,可直接判定为冗余资源,技术栈迁移时不需要投入资源重写。
内容的提问来源于stack exchange,提问作者Gert Meleqi
相关产品推荐
相关产品推荐

