必须重启电脑启用pool tagging后,用findstr或strings.exe在drivers目录搜索tag以定位元凶驱动;若findstr无结果,则用strings.exe提取4字符字符串再筛选,powershell命令可自动跳过权限错误并精准匹配。

当你用Poolmon发现某个Tag(如RPp、FMfn、Thre)在Nonpaged Pool中持续占用数GB内存,且Allocs远大于Frees时,必须立刻将该Tag映射到具体的.sys驱动文件,否则无法卸载或更新元凶驱动。
确认Poolmon已启用池标记功能
Poolmon默认只能显示Tag名称,无法直接关联驱动——因为Windows内核需先开启“池标记(Pool Tagging)”机制,驱动分配内存时才会写入可识别的4字符标签。若未启用,所有Tag会显示为????或乱码。
以管理员身份运行cmd,执行:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v GlobalFlag /t REG_DWORD /d 0x00000400 /f
【必须重启电脑才生效】。不重启,后续所有查找操作都无效——Poolmon读不到任何真实Tag,findstr也搜不到匹配内容。
用findstr在drivers目录下暴力搜索Tag
这是最直接、成功率最高的方法,适用于所有Windows 10/11系统,无需额外工具。
第一步:打开管理员权限的PowerShell或CMD
第二步:切换到驱动目录 → cd /d "C:\Windows\System32\drivers"
第三步:执行搜索命令(注意大小写敏感,且Tag必须是4个ASCII字符):
findstr /m /l /s RPp *.sys
如果返回结果类似 mfehidk.sys,说明RPp标签由迈克菲键盘驱动创建;若返回空行,说明该Tag不是标准字符串硬编码,而是运行时动态生成——此时需改用strings.exe辅助。
用strings.exe + findstr双引擎定位动态Tag
某些驱动(如ndu.sys、某些网卡驱动)不把Tag写死在二进制里,而是拼接生成(如'N'+'D'+'U'+'\0'),普通findstr搜不到。
方法一:下载Sysinternals strings.exe(微软官方工具),放至C:\tools\strings.exe
方法二:在drivers目录下执行:
for %i in (*.sys) do @C:\tools\strings.exe -n 4 "%i" | findstr /i "RPp" && echo %i
这行命令会逐个提取每个.sys文件中所有4字符长度的可读字符串,再筛选含RPp的行,并打印对应文件名。实测对ndu.sys、Rt640x64.sys等顽固驱动有效。
用PowerShell一行命令精准过滤
比CMD更稳定,自动跳过权限拒绝的文件,且支持正则匹配。
以管理员身份运行PowerShell,粘贴执行:
Get-ChildItem "C:\Windows\System32\drivers\*.sys" | ForEach-Object { if (Select-String -Path $_.FullName -Pattern "RPp" -CaseSensitive -Quiet) { Write-Host "$($_.Name) ← 匹配RPp标签" -ForegroundColor Green } }
输出示例:
ndu.sys ← 匹配RPp标签
该命令会高亮显示真正包含RPp字节序列的驱动文件,避免误报。











