我有时会用进程监控用于调试软件,也可以在线玩游戏。其中一些游戏使用战斗之眼反作弊软件,在系统启动 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
答案3
有问题的PROCMON23.SYS
过滤驱动程序由 ProcMon 在运行时安装。如果该文件
C:\Windows\system32\Drivers\PROCMON23.SYS
当时不存在,则 ProcMon 会将其写入。该PROCMON23.SYS
文件本身作为二进制资源包含在 ProcMon 的可执行文件中。
您可以通过以下方式列出所有正在运行的过滤驱动程序:
fltmc filters
在我的电脑上,结果是:
如您所见,我的进程监视器版本比您的新(24 而不是 23)。
通常可以使用以下命令来卸载过滤驱动程序:
Fltmc unload PROCMON24
但是,在这种情况下,这将导致提升命令提示符:
卸载错误 0x801f0010 是没有卸载例程的微过滤驱动程序的典型错误。
结论:PROCMON23.SYS 和后来的 PROCMON24.SYS 编程很差。开发人员没有预见到有人会希望卸载他的驱动程序,也没有在其中包含必要的例程。因此无法卸载此驱动程序。
坏消息是,您需要重新启动才能将其删除,没有其他方法可以解决这个问题。您唯一的办法就是向开发人员投诉。