如何在不重新启动的情况下卸载 Process Monitor 驱动程序?

如何在不重新启动的情况下卸载 Process Monitor 驱动程序?

我有时会用进程监控用于调试软件,也可以在线玩游戏。其中一些游戏使用战斗之眼反作弊软件,在系统启动 Process Monitor 后,拒绝游戏运行,并在日志中显示以下内容:

08:06:46: Starting BattlEye Service...

08:06:49: Launching game...
08:07:07: Disallowed driver: "\??\C:\Windows\system32\Drivers\PROCMON23.SYS". Please unload it or reboot your system.

关闭进程监视器后,驱动程序仍处于加载状态,并且似乎没有选项可以将其卸载。

其他几个问题都有关于使用net stop或卸载驱动程序的答案sc stop,但 ProcMon 驱动程序不是服务,所以这不起作用。我也尝试过在设备管理器中查找并启用“显示隐藏的设备”,但没有出现与 ProcMon 相关的条目。我无法删除驱动程序文件,因为它实际上并不存在于文件系统中;ProcMon 将文件存储在其可执行文件中并根据需要提取它。

我的问题不是重复的这个问题,这是关于一个类似的问题,即驱动程序在重启后仍然存在。我的问题是关于在不重启的情况下卸载驱动程序。

答案1

标准驱动程序服务,您确实可以通过net和来控制它们sc。(例如,看看sc query beep– 停止“蜂鸣”驱动程序是关闭内部 PC 扬声器的常用方法。)

在早期的 Process Monitor 版本中(可能是 2.3 之前的版本,当时它仍然支持 Windows XP),它会安装一个“遗留”设备驱动程序,曾是可通过sc、设备管理器等查看。


当前版本的 Process Monitor 似乎会在启动驱动程序后立即从注册表中删除驱动程序/服务配置。您可以通过使用自身监控 ProcMon。可以手动重新添加服务,类型 2(内核 FS 驱动程序),它将立即显示为已在运行。

但是,该服务也会报告“NOT_STOPPABLE”并且会拒绝任何停止尝试。

此外,PROCMON23 现在将自己注册为文件系统微过滤器驱动程序通过筛选器管理器 (FltDrv) 卸载它。您可以在 的输出中看到它fltmc,但尝试从外部卸载它也会失败(可能是因为驱动程序没有卸载例程):

C:\WINDOWS\system32>fltmc

过滤器名称 实例数 高度 框架
------------------------------ ------------- ------------ -----
PROCMON23 0 385200 0
WdFilter 4 328010 0
storqosflt 0 244000 0
wcifs 1 189900 0
...

C:\WINDOWS\system32>fltmc 卸载 PROCMON23

卸载失败,错误:0x801f0010
此时不要将过滤器从卷中分离。

由于“官方”CLI 工具无法从 FltMgr 中删除过滤器,并且 FltMgr本身是一个“关键”驱动程序,如果不重新启动就无法重新启动,似乎没有办法卸载 PROCMON23 或 PROCMON24。


但最有趣的部分是:在使用 procmon 3.40 进行上述检查后,我发现网站上的最新版本是 3.50(使用较新的 PROCMON24 驱动程序)。启动新版本后,我被告知系统中已有旧版本的驱动程序,我应该重新启动。

因此如果 ProcMon本身无法卸载其自己的驱动程序而无需重新启动,我想您可以放心地假设您也无法卸载它。

答案2

除了很好的答案经过用户1686结论是没有办法卸载它,我想补充一点,Windows 10 上的正常重启也无济于事,因为 Windows 10 现在会保留一些内存并在启动时重新加载它,所以即使重启后驱动程序仍会留在内存中。

为了避免这种情况,请以管理员身份运行以下命令重新启动:

shutdown /r /f /t 0

这将执行正确的重启。以fltmc管理员身份运行检查,确认驱动程序不再存在。

答案3

有问题的PROCMON23.SYS过滤驱动程序由 ProcMon 在运行时安装。如果该文件 C:\Windows\system32\Drivers\PROCMON23.SYS 当时不存在,则 ProcMon 会将其写入。该PROCMON23.SYS文件本身作为二进制资源包含在 ProcMon 的可执行文件中。

您可以通过以下方式列出所有正在运行的过滤驱动程序:

fltmc filters

在我的电脑上,结果是:

图像

如您所见,我的进程监视器版本比您的新(24 而不是 23)。

通常可以使用以下命令来卸载过滤驱动程序:

Fltmc unload PROCMON24

但是,在这种情况下,这将导致提升命令提示符:

图片2

卸载错误 0x801f0010 是没有卸载例程的微过滤驱动程序的典型错误。

结论:PROCMON23.SYS 和后来的 PROCMON24.SYS 编程很差。开发人员没有预见到有人会希望卸载他的驱动程序,也没有在其中包含必要的例程。因此无法卸载此驱动程序。

坏消息是,您需要重新启动才能将其删除,没有其他方法可以解决这个问题。您唯一的办法就是向开发人员投诉。

答案4

看起来它挂接到了内核,你需要它(内核)来防止它因为其他原因(PC崩溃)重新启动。

依赖性遍历器

这可以解释为什么你必须重新启动...这是它脱离内核的唯一方法。

相关内容