Я иногда используюМонитор процессадля отладки программного обеспечения, а также играть в игры онлайн. Некоторые из этих игр используютBattlEyeАнтичит-программа, которая не позволяет запустить игру после запуска 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.
Драйвер остается загруженным после закрытия Process Monitor, и, похоже, нет возможности его выгрузить.
На несколько других вопросов есть ответы о выгрузке драйверов с помощью net stop
или sc stop
, но драйвер ProcMon не является службой, поэтому это не работает. Я также пробовал искать в диспетчере устройств и включать «Показывать скрытые устройства», но ни одна из записей не отображается как относящаяся к ProcMon. Я не могу удалить файл драйвера, так как он фактически отсутствует в файловой системе; ProcMon сохраняет файл в своем исполняемом файле и извлекает его по мере необходимости.
Мой вопрос не является дубликатомэтот вопрос, который касается похожей проблемы, когда драйвер сохраняется после перезагрузки. Мой вопрос о выгрузке драйвера без перезагрузки.
решение1
Стандартные драйверыявляютсяслужбы, и вы действительно можете управлять ими с помощью net
и sc
. (Например, взгляните на sc query beep
– остановка драйвера «beep» является распространенным способом отключить внутренний динамик ПК.)
В более ранних версиях Process Monitor (вероятно, до версии 2.3, когда еще поддерживалась Windows XP) он устанавливал «устаревший» драйвер устройства, которыйбылвиден через sc
, Диспетчер устройств и т. д.
Текущие версии Process Monitor, похоже, удаляют конфигурацию драйвера/службы из реестра сразу после запуска драйвера. Вы можете увидеть это помониторинг ProcMon с самим собой. Можно вручную повторно добавить службу с типом 2 (драйвер файловой системы ядра), и она сразу же отобразится как уже запущенная.
Однако служба также выдаст сообщение «NOT_STOPPABLE» и отклонит любые попытки остановки.
Кроме того, PROCMON23 теперь регистрирует себя какминифильтр файловой системыдрайвер через Filter Manager (FltDrv). Вы можете увидеть его в выводе fltmc
, но попытка внешней выгрузки также не удалась (возможно, потому что драйвер не имеет процедуры выгрузки):
C:\WINDOWS\system32>fltmc Имя фильтра Количество экземпляров Высота Рамка ------------------------------ ------------- ------------ ----- ПРОЦМОН23 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
и на моем компьютере это дает:
Как видите, моя версия Process Monitor новее вашей (24 вместо 23).
Обычно драйвер фильтра можно удалить с помощью такой команды:
Fltmc unload PROCMON24
Однако в этом случае это дает повышенные привилегии командной строки:
Ошибка выгрузки 0x801f0010 — типичная ошибка для драйвера мини-фильтра, у которого нет процедуры выгрузки.
Вывод: PROCMON23.SYS и более поздний PROCMON24.SYS плохо запрограммированы. Разработчик не предвидел, что кто-то когда-либо захочет выгрузить его драйвер, и не включил в него необходимую процедуру. Поэтому этот драйвер не может быть выгружен.
Плохая новость для вас в том, что для его удаления требуется перезагрузка, ничто другое не поможет. Ваш единственный выход — пожаловаться разработчику.
решение4
Похоже, он подключается к ядру, которое вам (ядру) и нужно, чтобы предотвратить перезагрузку по другим причинам (сбой ПК).
Это объясняет, почему вам нужно перезагрузиться... это единственный способ отсоединиться от ядра.