简介:filemon V4.33 是一款经典的系统文件监控工具,适合系统管理员和开发者用于实时跟踪文件与文件夹的打开、读取、写入、删除等操作,定位软件冲突和性能瓶颈。相比 V7.04 版本,V4.33 运行更稳定,且为绿色免安装版本,解压即可使用。资源共 2 个文件,压缩包仅 77KB,包含一个 HTML 说明文档和一个 ZIP 主程序压缩包,前者提供使用说明与兼容性指引,后者解压后获得可执行文件。已有 244 人学习下载。该工具支持按进程和路径过滤、详细事件记录与日志保存,可帮助用户深入了解系统内部文件活动,适合排查软件异常、分析程序行为或教学演示。对于需要在老旧系统或轻量环境下进行文件监控的读者,这套资源提供了原版工具与必要说明,具备较高实用价值。 做逆向分析和老软件调试的朋友,对 Sysinternals 工具集应该都不陌生。其中 filemon(File Monitor)V4.33 是我用了很多年的一款文件系统监控工具,别看它已经十多年没更新,在排查“程序到底读写过哪些文件”“某个路径为什么打不开”这类问题上,它依然是关键时刻能救命的工具。如果你经常处理软件兼容性问题、做恶意程序行为分析,或者单纯想搞清楚一个软件启动时背后究竟碰了哪些文件,这篇内容很适合你。
filemon 的核心能力用一句话概括:实时捕获并显示系统中所有文件访问请求。它通过加载内核态驱动,把系统里每一笔文件打开、读取、写入、删除操作都记录下来,精确到进程名、完整路径、操作类型和最终结果。V4.33 是它的最后一个版本,大约在 2006 年前后发布,之后 Sysinternals 团队推出了 Process Monitor 来整合文件、注册表和网络监控,但 filemon 体积小、启动快、过滤逻辑直白,在很多老环境里依然有独到的价值。
1. 项目概述:filemon V4.33 是什么,为什么它还没过时
1.1 一个文件系统监控的经典老将
filemon 全称 File Monitor,是 Sysinternals 在 Windows 9x/NT 时代就推出的系统监控工具。它在当年属于「系统内部机制教学工具」和「故障排查利器」的混合体:你不用写任何代码,启动它就能看到整个系统在文件层面的动态。V4.33 是它的最终形态,功能上已经相当稳定,包括进程过滤、路径过滤、高亮规则、日志导出,以及实时的列表显示。
我现在电脑里还留着一份 V4.33 的拷贝,主要用在两类场景。一类是处理 Windows XP/2000 老机器的软件问题,这种环境下 ProcMon 反而有点“水土不服”,因为新版 Process Monitor 对老系统的支持已经放得很低了。另一类是快速演示文件系统行为,比如给学生或者刚入行的同事讲“一个程序启动时最少会打开多少文件”,filemon 一开,答案就摆在屏幕上,比任何抽象的理论都直观。
很多人会问我:都 2025 年了,还用这种老工具?我的看法是,工具的价值取决于场景,不取决于年份。V4.33 功能确实单一,但正是这种单一让它有极低的学习成本和极快的上手速度。遇到具体问题时,先跑一个 filemon 抓 30 秒日志,往往就能把问题范围缩小掉一大半,比直接上重型分析工具要顺手得多。
1.2 工作原理与资源占用优势
filemon 之所以能做到实时监控,靠的并不是轮询扫描,而是在系统内核层挂了一个驱动。它会把文件系统相关的高层请求截获下来,解析出请求来自哪个进程、访问了哪条路径、执行了什么操作、最终是否成功。只要系统里有任何进程发起文件操作,这个驱动就能第一时间看到,并把它投递给 UI 界面显示出来。
我不打算把内部实现细节讲得太深,因为那是驱动开发层面的内容,大部分人用不到。但你需要理解一个关键点:filemon 的记录粒度是“请求”,不是“文件内容”。也就是说它能告诉你某进程读了一个文件、读了多少字节,但它不会告诉你文件内容本身是什么。这个边界决定了它的应用范围——适合做行为分析、路径分析、成功失败判断,不适合做内容还原。
资源占用方面,V4.33 比 Process Monitor 要轻一个量级。ProcMon 会同时接管文件、注册表、网络和进程线程活动,每秒钟可以积压成千上万条事件,内存占用经常冲到几百 MB。而 filemon 只盯文件系统,界面也更朴素,在磁盘活动不太频繁的机器上,长期开着基本感觉不到什么负担。这也是为什么有些做兼容性测试的老工程师,宁可把 filemon 挂在后台一整天,也不愿意让 ProcMon 在那里吃内存。
2. 核心功能拆解:上手前必须搞懂的 5 个操作点
2.1 过滤规则:从“全量刷屏”到“只看目标”
打开 filemon V4.33 的第一感觉就是:数据量太恐怖了。系统一启动,列表就会被各种进程的文件请求刷屏,如果不做任何过滤,你根本找不到自己想要的那一条。所以学会过滤,是使用这个工具的第一课。
点击菜单栏的 Options -> Filter/Highlight,或者直接按 Ctrl+L,就能打开过滤设置窗口。这个窗口并不复杂,核心就是三个字段:
- Include:只显示匹配该规则的路径
- Exclude:排除匹配该规则的路径
- Highlight:高亮显示匹配该规则的路径
过滤规则本身支持通配符,*表示任意长度字符串,?表示单个字符。比如我想只看 notepad.exe 访问了什么文件,可以在 Include 里填:
Include: *notepad*如果我只关心某个目录,不关心其他位置,可以填:
Include: C:\Users\admin\AppData\*这里有一个很常见的坑:很多人喜欢用 Exclude 来排除C:\Windows\*,想把系统日志排除掉,结果发现过滤之后整个列表都空了,或者该看的也被干掉了。原因在于 filemon 的 Include 和 Exclude 是叠加生效的,多个规则之间是 AND 关系。如果你同时写了 Include 和 Exclude,事件必须同时满足 include 条件且不满足 exclude 条件才会显示。建议新手先只用一个 Include,把范围框定到目标进程或目标路径上,不要去叠复杂条件。
过滤规则匹配的是 Path 字段的路径字符串,不是进程名。这一点同样容易踩坑——假如我不想看 svchost.exe 的日志,在 Include 里填进程名是没用的。进程名的过滤在 filemon V4.33 里只能靠高亮或者事后再按进程名手动筛,没办法在过滤阶段直接做。真要精确到进程级过滤,建议直接用 ProcMon,这是 tool 历史局限的一部分。
2.2 界面字段:这 6 列到底怎么读
当列表刷出来以后,你需要能快速读懂每一列的信息。filemon V4.33 的主界面默认显示 7 列,我挑实际最常用的 6 列说:
| 列名 | 含义 | 读法 |
|---|---|---|
| # | 事件序号 | 按时间递增,方便回溯顺序 |
| Process | 进程名 | 谁发起的这个文件操作 |
| Request | 操作请求类型 | 比如 IRP_MJ_CREATE、IRP_MJ_READ、IRP_MJ_WRITE |
| Path | 完整路径 | 操作的目标文件或目录 |
| Result | 操作结果 | 常见 SUCCESS 或各种错误码 |
| Other | 附加信息 | 比如读写的字节数、偏移量等 |
这 6 列里面,Request 和 Result 是最需要花点心思理解的。Request 字段里常见的有IRP_MJ_CREATE(打开或创建文件)、IRP_MJ_READ(读文件)、IRP_MJ_WRITE(写文件)、IRP_MJ_SET_INFORMATION(设置文件信息,比如修改时间、删除标记)、IRP_MJ_CLEANUP和IRP_MJ_CLOSE(关闭句柄)。
这些名字看起来是驱动层的术语,但你不需要理解 Windows 内核的对象管理细节,只需要把它们当作“动作标签”就行:打开、读、写、改属性、关句柄。举例来说,一个程序启动时总要先IRP_MJ_CREATE它的配置文件,如果这个 CREATE 返回了ACCESS DENIED,那问题十有八九出在权限上;如果是FILE NOT FOUND,那就是路径不对或者文件缺失。
Result 字段还有一个比较实用的用法:当 Result 里出现大量SHARING VIOLATION(共享冲突)时,通常意味着有两个进程在同时操作同一个文件,一个没放开独占锁,另一个进不来。这种问题在文件同步工具、杀毒软件扫描之类的高并发场景下特别常见,靠 filemon 一眼就能定位。
2.3 高亮与快捷键:快速定位关键事件
日志量一大,纯靠肉眼扫列表还是费劲。filemon V4.33 提供了事件高亮功能,同样在 Options -> Filter/Highlight 里配置。你可以追加高亮规则,例如:
Highlight: *config*.ini Highlight: *ACCESS DENIED*这样匹配的事件在列表里会以不同颜色显示,我一般会把错误结果高亮成红色,把目标路径高亮成黄色。这个技巧在抓取长时间日志时特别有用,你可以不暂停捕获,先干别的事,过一阵回来扫一眼颜色的变化,就能快速判断有没有异常。
再说几个我常用的快捷键:Ctrl+E是开关捕获(Events 菜单里的 Capture Events),Ctrl+X清空当前列表,Ctrl+S保存日志。开始排查问题时,我习惯先按 Ctrl+X 清屏,再按 Ctrl+E 把捕获关掉,等目标程序就绪后再按 Ctrl+E 打开捕获,这样能有效防止把程序启动前的噪声也录进去。这个小习惯能省掉大量筛选时间。
3. 实战案例:三个可复用的排查过程
3.1 案例一:定位程序的配置文件到底在哪
很多软件不会把配置写在安装目录,而是放在用户目录下。想定位一个程序的配置路径,看起来简单,实际查起来却很烦,尤其是没有明确文档的老软件。这时候用 filemon 做个“文件访问快照”,几分钟就能定位。
我的操作步骤是这样的:先关掉目标程序,打开 filemon,Ctrl+X 清空日志,但先不要停止捕获。然后启动目标程序,让它运行几秒钟到完成初始化,再点击 Capture Events 暂停捕获。接着在列表里按 Process 找到目标进程,浏览它的IRP_MJ_CREATE和IRP_MJ_READ事件。
正常情况下,你会在 Path 列看到一串按时间排列的路径,其中除了当前目录和系统运行库之外,一定会有那个配置文件。比如我上次排查一个老式国产软件,发现它把配置写进了安装目录下的config.dat,但同时又读了一个%APPDATA%下的同名文件,最终行为是“安装目录的配置优先,用户目录的配置兜底”。这种问题直接看 source code 可能要翻半天,用 filemon 一条条列出来,逻辑一目了然。
3.2 案例二:程序保存失败,是权限还是路径问题
“程序报错保存配置失败”这种问题,在帮助台那边经常被当作软件 bug 反馈上来,但实际查下来大概率是文件访问失败。用 filemon 可以很快区分原因:是路径不存在,还是权限不够,还是文件被别的进程锁了。
操作方法和上一个案例类似,只是在程序里手动触发一次“保存”动作,然后立刻回 filemon 里看这个进程最近几条IRP_MJ_WRITE和IRP_MJ_SET_INFORMATION事件。看 Result 列就能直接得到答案:
ACCESS DENIED说明普通用户对目标目录没有写权限,这是把配置写进 Program Files 导致的典型症状。PATH NOT FOUND说明目录不存在,常见于程序没创建多级目录就直接写文件。SHARING VIOLATION说明文件句柄被其他进程占用,可能是杀毒软件在扫描,也可能是程序自己没释放句柄。
我遇到最多的是第一种,尤其是老程序默认把配置写到安装目录,而安装目录在 UAC 控制下普通用户根本没有写权限。见到ACCESS DENIED时,我会顺手在 Result 上右键看看具体错误码,然后判断是该做目录权限映射还是改配置路径。这套排查方法比直接改注册表、翻事件管理器要高效得多。
3.3 案例三:隔离环境里分析可疑文件的落地行为
分析可疑程序时,第一步往往就是看它释放了什么文件、修改了什么文件。虽然现在的沙箱分析工具很多,但在本地虚拟机里用 filemon 快速过一遍,依然是我推荐的做法。注意:这类分析一定要在隔离的虚拟机环境中进行,并且要给虚拟机做快照,不要在主宿主机上直接运行未知程序。
流程是这样的:先在虚拟机里关闭网络连接,启动 filemon,清空日志,把过滤规则设为Exclude: C:\Windows\*和Exclude: *temp*,把系统噪声降下来。然后把可疑程序拖进虚拟机,运行它,等个 10 秒左右,暂停捕获。
此时看列表里那些非系统路径下的写入动作,特别是IRP_MJ_CREATE+IRP_MJ_WRITE组合的事件。可疑程序通常会在临时目录、启动目录或用户目录下释放文件。我会把这些路径挨个放到虚拟机资源管理器里检查,确认是否有新增的 exe、dll、bat 等文件。filemon 的价值就在这里:它把所有文件落地行为按时间顺序展示出来,可疑程序什么时候释放了什么文件、改了哪个文件,全部对得上号。
我会再强调一遍,不要用 filemon 监控“已感染且还在运行中的系统”,先断网,再抓行为,分析完直接恢复快照。这样既安全又能保证数据干净。
4. 常见问题与排查技巧实录
4.1 在 Windows 10/11 上运行报错怎么办
最常收到的反馈就是:双击 filemon V4.33,提示加载驱动失败,甚至直接触发系统保护。原因不复杂:这个工具的驱动是十几年前签名的,在现在默认开启强制驱动签名的系统上过不了验证。另外它的驱动实现里用了不少老式内核接口,新内核里可能已经被移除或改了行为。
我的建议很简单:在 Windows 10/11 上就不要硬用 filemon 了。同类功能用 Process Monitor 替代,ProcMon 不仅支持签名也能正常加载,而且事件类型更多。如果你只是临时用它做文件监控,ProcMon 完全够用。如果非要用 filemon,我的经验是只建议放在 Windows 7 及以下的虚拟机或者 PE 环境里,不建议在主力机上折腾关闭驱动签名这类操作,风险太大,得到的回报却很小。
4.2 明明有事件,为什么列表里看不到
我见过不少新手在过滤配置上卡住。典型症状:程序明明在操作文件,但 filemon 列表里一片空白,或者只有系统进程的事件。这时候先别急着怀疑工具坏了,按这个顺序查一遍:
- 确认是不是按过快门键把 Capture Events 停了,切换状态时菜单栏会出现一个小的状态提示。
- 检查 Include 规则是否过于严格,比如把
*填到了 Include 里,又叠加了路径前缀,导致所有事件都被排除。 - 检查是否无意中开启了 Exclude 规则,并且配置成了
*,这等于把所有请求全挡掉了。 - 确认程序是以管理员权限运行,filemon 本身也要以管理员或 System 权限启动,否则它加载驱动会失败,也不会捕获到高权限进程的事件。
我曾经在排查一个服务类程序的日志时,连续十分钟什么都没抓到,最后发现是自己 Ctrl+L 界面里 Exclude 给了一个针对服务进程名的后缀匹配,直接导致所有事件被刷掉。从那以后我养成了习惯:任何过滤规则改动后,先跑一下notepad随便打开一个文件,看到列表有动作,再开始正式抓包。
4.3 日志文件巨大、系统卡顿的处理
长时间开着 filemon,系统的磁盘活动会被它全量记录,日志文件可能迅速膨胀到几百 MB 甚至几个 GB。这不仅是磁盘空间的浪费,同时也会拖慢系统速度,因为每一条文件操作都要经过驱动的拷贝、格式化、UI 渲染这一整条链路。
我常用的降载手段有两种。第一种是开过滤,只保留目标进程的路径段,减少到达 UI 层的事件数量。第二种是减轻显示压力:如果只是后台采集,可以把显示列减少,或者干脆把捕获时间限制在几十秒内,分析时再放大观察。V4.33 支持将 Capture 输出到文件,但这种方式对普通用户意义不大,一般还是建议“短抓快查”,不要试图长时间全量记录整个系统。
如果确实需要长时间监控,我建议转到 ProcMon,它对“后台日志 + 事后分析”的支持要好得多,过滤功能和文件体量控制也更完善。filemon 这个老版本更适合“拿起来就用,用完就关”的临时场景。
4.4 什么时候用 filemon,什么时候用 Process Monitor
最后整理一下我实际使用的选择逻辑。两者的关系其实不是替代,而是互补:
| 判断维度 | filemon V4.33 | Process Monitor |
|---|---|---|
| 系统适配 | Windows 7 及以下、PE | Windows 7 到 11 都可 |
| 监控范围 | 仅文件系统 | 文件、注册表、网络、进程线程 |
| 启动速度 | 快 | 慢 |
| 内存占用 | 低 | 高(日志多时非常高) |
| 过滤能力 | 路径为主,较基础 | 进程、PID、路径、事件类型、时间等全维度 |
| 适合场景 | 快速定位文件访问、老系统 | 全量行为分析、复杂问题、长期监控 |
我个人使用习惯是:老系统、PE 环境、只需要文件层面的快速判断,直接用 filemon;日常电脑上做软件行为分析、需要叠加注册表和网络事件时,才用 ProcMon。两者都有无法替代的价值,没必要因为追求新功能就把老工具丢掉。
最后分享一个我长期用下来的小技巧:如果只是临时看一次文件访问,别在一开始就配一堆过滤规则,先清空日志,直接全量抓几十秒,再暂停,之后用菜单里的“按进程过滤”或者列排序手动筛选,效率往往比一开始就费劲写规则高得多。抓完之后,记得顺手 Ctrl+S 保存一份日志再用 Ctrl+X 清理界面,以防下一次排查时日志混在一起。filemon V4.33 虽然老,但只要用对场景,它依然是那个最顺手、最不添乱的监控工具。
本文还有配套的精品资源,点击获取