
简介面向IT运维与桌面支持人员的Process Monitor实用说明文档聚焦文件系统、注册表、进程与线程活动的实时监控帮助读者排查软件冲突、权限异常与系统性能瓶颈也可作为ipguard、ip-guard相关问题的辅助分析参考。压缩包共1个docx文件约84KB内容以图文说明和界面提示为主篇幅精简便于随用随查。已有696人学习。文档围绕监控前准备、过滤条件设置、事件采集与停止、数据保存及后续分析等环节展开并配有关键界面截图提示能帮助初学者快速建立规范的采集流程也为有经验的工程师提供问题复现与日志留存的参考思路。对于需要定位疑难故障、整理排错证据或进行性能调优的系统管理员这份材料可作为日常排查与团队交接的轻量参考资料亦可辅助理解监控数据的组织方式与分析切入点。1. 捕获一开就翻车Process Monitor 与 ip-guard 排错先盯这三个信号Process Monitor 使用说明里最容易被跳过的一步是采集前先停、先清空一跳过ipguardip-guard客户端的问题复现时就会满屏无关事件。很多人打开工具就点放大镜让员工直接操作最后保存下来的日志里全是系统后台读写真正被拦截的 CreateFile、RegOpenKey 和 ACCESS DENIED 被冲得找不着。这个坑不分新手老手远程支持时尤其常见员工一句“我已经点了”并不代表顺序对。下面按捕获不到、保存打不开、复现失败、常见避坑四类故障拆开每条给可抄的命令、过滤器和验证方法适合正在用 Process Monitor 排查 ip-guard 客户端异常、又不想把日志变成黑匣子的开发者。2. 打开就满屏事件Process Monitor 捕获不到 ip-guard 动作的过滤器写法Process Monitor 默认启动即捕获事件速率高得离谱。ip-guard 客户端的一次文件探测可能夹在几十条系统进程的读写里保存成日志后再搜经常只剩 Process Start 和一堆无关的 RegQueryValue。症状看起来像“工具没抓到”根因通常在三层捕获窗口没卡准、过滤器写得太宽或太窄、目标动作由子进程或服务进程代理。先把停、清、筛、开、停、存这个顺序固定下来再谈分析。2.1 先停再清空为什么“边跑边抓”会把关键事件冲掉Process Monitor 打开后默认就在抓目标软件如果已经运行启动阶段的关键事件已经过去剩下的全是后台轮询。正确顺序是先关闭要采集信息的软件再打开 Process Monitor点工具栏上的放大镜停止捕获图标带红叉才是停止状态然后点橡皮擦清空已有事件。首次启动如果弹出驱动加载或筛选器重置提示按提示重置并确定处理完不要直接开抓回到第一步重新关闭目标软件再开始捕获。这个顺序不是形式主义。清空只清界面里的事件如果已经开了 Backing File磁盘上的旧内容还在目标软件如果没关清空后它的后台线程仍会继续写事件员工复现的那一次失败动作很容易被冲散。常见做法是清空后先让事件列表停住确认没有新行滚动再点放大镜开始捕获然后让员工只做一次失败操作。命令行启动可以把 Backing File 和过滤器一次固定减少手抖$procmon C:\Tools\Procmon.exe $trace C:\temp\ipguard_trace.pml $config C:\temp\ipguard_filter.pmc $procmon /AcceptEula /Quiet /Minimized /BackingFile $trace /LoadConfig $config逻辑是先把事件直接写磁盘避免长时间采集把内存吃满再加载预先保存的过滤器配置。/AcceptEula只在第一次接受协议时用/Quiet减少弹窗/Minimized最小化启动/BackingFile指定落盘文件/LoadConfig加载.pmc过滤器配置。启动后仍要人工确认放大镜状态命令行不会替你看清空有没有做。2.2 过滤器三层收窄进程名、路径、结果过滤器不要一上来就写五六个 AND 条件。第一层先用进程名粗筛比如Process Name contains ipguard或Process Name contains ip-guard第二层用路径兜底比如Path contains ip-guard因为客户端可能由子进程或服务进程发起访问第三层再看结果比如Result is ACCESS DENIED、Result is NAME NOT FOUND以及Operation is CreateFile、RegOpenKey、WriteFile、SetValue。三层的关系是先宽后窄先确认有事件再逐步加条件。层级字段示例条件用途第一层Process Namecontains ipguard先确认目标进程有没有出现第二层Pathcontains ip-guard抓子进程和服务进程的代理访问第三层Resultis ACCESS DENIED缩小到被拒绝的动作补充层Operationis CreateFile看文件打开失败还是注册表写入失败如果进程名拿不准先用 PowerShell 把相关进程列出来不要凭记忆写过滤器Get-Process | Where-Object { $_.ProcessName -match ip|guard } | Select-Object ProcessName, Id, Path-match是正则匹配ip|guard表示命中任意一个词Path用来确认真实安装路径有些客户端进程名和安装目录并不完全同名。找到实际进程名后再回到 Process Monitor 的 Filter 菜单里收窄。注意不要在这个阶段结束进程采集现场被破坏后面很难复现。2.3 用命令行固定捕获配置减少手抖过滤器在界面里点一遍很轻松远程指导时让对方点一遍就容易翻车。我一般会在一台干净机器上把过滤条件调好保存成.pmc之后用/LoadConfig加载。采集结束后先停止捕获再保存日志不要一边滚动一边保存文件容易只写一半。停止可以用界面放大镜也可以用命令行终止 C:\Tools\Procmon.exe /Terminate Start-Sleep -Seconds 2 Get-ChildItem C:\temp\ipguard_trace*.pml | Sort-Object LastWriteTime -Descending | Select-Object -First 1 FullName, Length, LastWriteTime/Terminate会让 Process Monitor 退出执行前确认员工已经完成复现Start-Sleep留两秒给文件落盘Get-ChildItem按最后写入时间找最新日志Length为 0 就说明没写成别急着发给别人分析。这个检查比反复问“你保存了吗”有效得多。2.4 验证过滤器是否真的命中过滤器加载后不要直接让员工操作十分钟。先做一个已知动作打开目标软件触发一次被拦截的操作然后看事件列表里有没有目标进程、有没有 ACCESS DENIED、事件总数是不是明显下降。如果事件数仍然成千上万大概率是过滤器没加载如果一条都没有大概率是条件太窄或进程名写错。保存成 CSV 后可以用一条命令看结果分布Import-Csv C:\temp\ipguard_trace.csv | Group-Object Result | Sort-Object Count -Descending | Select-Object -First 10 Name, CountImport-Csv读取导出的表格Group-Object Result按结果列聚合Sort-Object Count -Descending把出现最多的结果排前面。ACCESS DENIED 为 0不一定是没有问题也可能是过滤器把目标进程挡掉了NAME NOT FOUND 很多则要结合路径看是不是程序在探测不存在的文件。验证这一步做一次比后面翻几千行日志省时间。3. 保存后打不开.PML、.CSV、.EVtx 后缀选错与文件过大的处理最常见的报错是“文件格式不支持”“打开是空白”“日志几个 G 拖不动”。Process Monitor 保存对话框里能选原生日志、CSV也能看到系统事件日志格式的影子。原生日志一般是.PMLCSV 给表格工具看.EVtx是系统事件日志格式用 Process Monitor 直接打开经常提示不支持。按说明保存成.EVtx后双击打不开先别怀疑采集失败换保存类型重存往往就恢复正常。3.1 保存对话框里三个选项的差别保存时先看“All events”还是“Filtered events”。All events 保留全部现场文件大但可回溯Filtered events 只留当前过滤器命中的事件文件小后面想换条件就没了。建议先存全量.PML再另存一份 CSV 做筛选。.PML用 Process Monitor 自己打开.CSV用表格工具或 PowerShell 读.EVtx交给系统事件查看器三者不要混用。保存前必须停止捕获。放大镜带红叉才是停止停止后再点保存如果还在滚动保存出来的文件可能缺最后一段。保存后先看文件大小和最后写入时间Get-Item C:\temp\ipguard_trace.pml | Select-Object FullName, Length, LastWriteTimeLength是字节数太小说明没抓到有效事件LastWriteTime应该是刚刚停止捕获的时间。文件存在但打开空白常见原因是保存成了过滤后视图而过滤器把目标进程全挡掉了换 All events 重存一次再验证。3.2 大文件截断与 Backing File 的用法采集时间一长内存模式很容易把工具拖死。Backing File 的作用是直接把事件写到磁盘代价是磁盘空间要留够。采集前先看目标盘剩余空间不要存到网络盘或同步盘写入延迟和文件锁会让日志只写一半。我一般固定在本地临时目录采集分析完再复制走。$trace C:\temp\ipguard_trace.pml $free (Get-PSDrive C).Free if ($free -lt 5GB) { Write-Warning C盘剩余空间不足5GB先清理再采集 } C:\Tools\Procmon.exe /AcceptEula /Quiet /Minimized /BackingFile $traceGet-PSDrive C取 C 盘剩余空间5GB是保守阈值事件多的时候可以留更多Write-Warning只提示不中断是否继续由现场决定/BackingFile让事件直接落盘。注意 Backing File 模式结束后仍要在界面里另存为正式日志排查时把采集文件和另存文件分开命名避免覆盖。3.3 用 PowerShell 把 CSV 压成可读清单CSV 列名带空格直接点属性容易写错。先按进程名和路径粗筛再按结果收窄最后只导出关键列。下面这段把 ipguard、ip-guard 相关路径和 ACCESS DENIED 筛出来$rows Import-Csv C:\temp\ipguard_trace.csv $rows | Where-Object { $_.Process Name -like *ipguard* -or $_.Process Name -like *ip-guard* -or $_.Path -like *ip-guard* } | Where-Object { $_.Result -eq ACCESS DENIED } | Select-Object Time of Day,Process Name,Operation,Path,Result | Export-Csv C:\temp\ipguard_denied.csv -NoTypeInformation -Encoding UTF8Import-Csv读入后Process Name必须加引号因为列名里有空格-like *ip-guard*是通配匹配大小写不敏感Export-Csv的-NoTypeInformation去掉类型头-Encoding UTF8避免中文路径乱码。列名如果对不上先执行$rows[0].PSObject.Properties.Name看实际表头不要硬套。3.4 打开空白/提示不支持时怎么回退先确认保存类型再看文件大小最后换工具打开。.PML只能用 Process Monitor 系工具打开用文本编辑器打开会看到乱码.CSV用表格工具或 PowerShell.EVtx用系统事件查看器但里面的字段和 Process Monitor 不是一套。文件为 0 字节通常是保存路径不可写、同步盘没落盘或安全软件隔离换本地目录重存。Get-ChildItem C:\temp\ipguard_trace.* | Select-Object Name, Length, LastWriteTime Format-Hex -Path C:\temp\ipguard_trace.pml -Count 8Get-ChildItem把同名前缀的文件全列出来避免把旧文件当新文件Format-Hex只看前 8 个字节确认文件不是空壳。-Count 8限制输出不要对几个 G 的文件直接跑十六进制。确认文件有效后再用 Process Monitor 的 File 菜单打开不要双击让系统猜关联程序。4. 复现问题就失败ip-guard 客户端拦截、权限与“采集前关闭软件”的顺序坑远程支持里最怕听到“你一开工具问题就没了”。有时是顺序错了有时是权限不够有时是 ip-guard 客户端策略把采集工具拦了。表现包括 Process Monitor 启动后没有事件、目标软件一闪退、客户端弹告警、日志里只有系统进程。先把顺序和权限这两件事排掉再谈策略拦截否则很容易把工具问题误判成业务问题。4.1 先关目标软件再开 Process Monitor 的顺序按使用说明里的顺序走关闭要采集信息的软件打开 Process Monitor停止采集清空信息如果出现驱动加载或筛选器重置提示按提示重置并确定重置后回到第一步重新关闭目标软件再开始捕获员工开始复现问题操作完成后再次点击放大镜停止采集然后保存。这里最容易错的是“重置确定后直接开抓”目标软件还开着清空后又被后台事件填满。为什么强调先关目标软件Process Monitor 加载驱动会改变文件系统和注册表访问的时序目标软件如果已经在运行启动阶段的加载、配置读取、服务连接都错过了先关再开才能把冷启动和失败动作放进同一个时间窗口。员工复现时只做一次失败操作不要顺带打开别的软件时间窗口越干净后面越好定位。4.2 以管理员身份运行与 UAC 虚拟化普通权限启动 Process Monitor系统进程和受保护路径经常看不到日志里会出现大量“没有权限”的空洞。用管理员身份启动才能看到服务进程和高权限目录的访问。直接双击和右键管理员启动事件覆盖范围不一样远程指导时要说清楚是哪一种。Start-Process C:\Tools\Procmon.exe -Verb RunAs Get-Process Procmon -ErrorAction SilentlyContinue | Select-Object ProcessName, Id, PathStart-Process -Verb RunAs触发提权现场会弹 UAC 确认Get-Process确认进程还在Path确认启动的是预期目录里的版本不是旧副本。如果进程秒退先看客户端告警和系统日志不要反复双击。提权只用于采集采集完正常退出不要长期挂着管理员窗口。UAC 虚拟化还会让路径看起来“不对”程序以为写进了安装目录实际被重定向到用户虚拟存储。日志里出现 VirtualStore 路径时不要直接判定程序写错目录先看它请求的原始路径和结果。对比正常机器同一操作的事件能快速区分是虚拟化重定向还是权限拒绝。4.3 ip-guard 策略拦截 Procmon 驱动/进程的识别方法现象很直接Process Monitor 启动后事件列表不滚动或者刚启动就被结束客户端弹出“禁止运行”的提示。先确认进程是否还在再看系统日志和客户端自身日志。不要一上来就换工具先判断是驱动加载失败还是进程被策略结束这两类处理方式不同。Get-Process Procmon -ErrorAction SilentlyContinue | Select-Object Id, StartTime, Path Get-WinEvent -LogName System -MaxEvents 50 | Where-Object { $_.Message -match Procmon|Process Monitor } | Select-Object TimeCreated, Id, LevelDisplayName, MessageGet-Process看进程是否存活StartTime能判断是不是刚启动就退出Get-WinEvent查最近 50 条系统日志-match匹配工具名。没有结果不代表没拦截客户端自己的日志更直接。确属策略拦截时走审批流程临时放行采集工具不要尝试对抗管控采集完立即恢复策略别把临时口子留成习惯。4.4 用最小复现步骤替代“全量录屏式采集”采集不是越久越好。让员工只重复一次失败动作前后各留几秒记录开始和结束时间日志里直接按时间窗口跳转。录十分钟看起来保险实际会把关键事件埋掉文件还大。复现步骤要写成员工能照做的短句打开哪个窗口、点哪个按钮、看到什么报错、立即停手。$start Get-Date 复现开始$start | Out-File C:\temp\repro_time.txt -Encoding UTF8 # 让员工执行一次失败操作完成后回填结束时间 复现结束$(Get-Date) | Out-File C:\temp\repro_time.txt -Append -Encoding UTF8Get-Date取当前时间Out-File第一次写入-Append追加结束时间-Encoding UTF8避免中文乱码。时间戳要和采集机器时钟一致跨机器对比时先校时。拿到时间窗口后在 Process Monitor 里按时间排序先看窗口内的进程和结果不要从头滚。5. 常见问题与避坑五条踩坑记录从现象到解决这些坑在远程支持里反复出现单看每一步都简单连起来就翻车。每条按现象、原因、解决写现场卡住时直接对照排查不要凭感觉重来一遍。5.1 坑一清空后忘了重新开捕获员工操作全白做现象员工说已经复现保存的日志里只有清空前的系统事件时间窗口对不上目标进程一条都没有。原因点橡皮擦清空后放大镜仍处于停止状态或者清空后去处理弹窗回来忘了再点开始。解决清空后看放大镜图标红叉消失才是捕获中让员工先别动确认事件列表在滚动再操作。采集结束后先停止再保存保存后看文件最后写入时间时间不对就重来。5.2 坑二只筛 Process Name漏掉子进程和 svchost 代理访问现象过滤器写了Process Name is ipguard事件很少但问题仍在路径里明明有 ip-guard 目录。原因客户端可能由子进程或服务进程代理访问文件操作不一定由主进程发起只用进程名筛会漏掉代理链。解决先按Path contains ip-guard筛再用进程树找父进程按 PID 追调用链。下面这条命令从 CSV 反查哪些进程碰过相关路径Import-Csv C:\temp\ipguard_trace.csv | Where-Object { $_.Path -like *ip-guard* } | Group-Object Process Name | Sort-Object Count -Descending | Select-Object -First 15 Name, CountWhere-Object先按路径过滤Group-Object Process Name按进程名聚合Sort-Object Count -Descending把访问次数多的排前面。Name是进程名Count是事件数。看到陌生进程不要急着结束先看它的父进程和签名路径。5.3 坑三把 ACCESS DENIED 当根因实际是正常探测现象日志里一出现 ACCESS DENIED 就认定权限问题改 ACL、加用户问题还在。原因很多程序会先探测路径是否存在、能否写入拒绝访问是预期分支后面会回退到用户目录或临时目录。解决看同一进程后续有没有成功事件看 Operation 和 Detail对比正常机器同一动作。只有“拒绝后没有回退、业务确实失败”才往权限方向查。单独一条拒绝记录不是根因是一句话。5.4 坑四保存到网络盘/同步盘写入一半就断现象保存过程卡住文件 0 字节或打开提示损坏换台机器又能打开旧日志。原因Backing File 或另存操作直接写网络盘、同步盘文件锁和延迟导致截断磁盘满也会出现同样表现。解决先写本地C:\temp再复制到共享目录保存后核对大小和哈希。$src C:\temp\ipguard_trace.pml $dst D:\share\ipguard_trace.pml Copy-Item $src $dst -Force Get-FileHash $src, $dst -Algorithm SHA256 | Select-Object Path, HashCopy-Item -Force覆盖目标文件Get-FileHash对源和目标分别算 SHA256两个哈希一致才说明复制完整。网络盘只作为交付位置不作为采集位置同步盘更容易在写入中途锁文件采集阶段直接避开。5.5 坑五用旧过滤器加载新场景路径规则过期现象加载上周的.pmc后一条事件本文还有配套的精品资源点击获取