Предыстория: Система Windows 10 22H2. Сидел, работал. В какой-то момент понадобилось отлучиться, жму Win+L для блокировки, а оно не блокируется. Через Win-меню тоже блокировка не работает, просто ничего не происходит. Попробовал вместо этого сделать Switch user — система показала чёрный экран и зависла наглухо. Вывести из этого состояния не удалось, пришлось грохать по питанию. После перезагрузки обнаружил, что Process Hacker потерял практически всю оцветовку процессов и не показывает некоторые детали (такие как уровень Elevation, Integrity, имя аккаунта, от которого запущен процесс, и пр.). Если в настройках отключить использование его драйвера, то оцветовка и информация возвращаются, но для большинства сервисных процессов Elevation остаётся N/A. То есть похоже, что проблема во взаимодействии с драйвером, но не пойму, что это может быть за проблема и как её чинить.
Все файлы ProcHacker'а на диске не побились, побитово идентичны заархивированному дистрибутиву. Настройки сбрасывать пытался, не помогло. Драйвер kprocesshacker.sys в системе загружен и работает (по крайней мере, согласно выводу sc query). Принудительно остановить и рестартануть его не получилось, на sc stop мне выдаётся 1052: The requested control is not valid for this service. Удалил ветку реестра, переименовал файл драйвера, перезагрузился, потом вернул имя драйвера и запустил ProcHacker, чтобы он заново начисто установил его. Драйвер установился, запустился, но ProcHacker по-прежнему не хочет отображать информацию.
Здравствуйте, CaptainFlint, Вы писали:
CF>Чем может быть вызвано подобное поведение и что можно ещё попробовать для починки? Переустановка системы не вариант.
Мне не нравится начало — не блокируется, не работает Switch User. Едва ли это сделал Process Hacker. Скорее проблема в системе.
Я бы первым делом запустил Process Explorer и выяснил, показывает ли он нормально хоть один из параметров, который Process Hacker не показывает.
Кстати, после reboot блокировка и Switch User восстановились ?
И еще — нет ли чего-то подозрительного в Event Viewer ?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Мне не нравится начало — не блокируется, не работает Switch User. Едва ли это сделал Process Hacker. Скорее проблема в системе.
PD>Я бы первым делом запустил Process Explorer и выяснил, показывает ли он нормально хоть один из параметров, который Process Hacker не показывает.
PD>Кстати, после reboot блокировка и Switch User восстановились ?
Нет-нет, понятно, что поломавшаяся блокировка — это было что-то системное. У меня там незадолго до этого ещё игрушка одна крэшнулась (непонятно, сама по себе или по внешним причинам), могла что-то не подчистить; плюс другой странный глюк проявился, на который я поначалу не обратил внимания; в общем, было ясно, что пора перезагружаться, но решил проверить, найдётся ли способ заблокировать систему в той ситуации. Process Hacker при этом был запущен и всё отображал корректно. После перезагрузки блокировка и Switch user починились; и вообще каких-то дополнительных проблем пока не обнаружил (не считая поломки Process Hacker).
Process Explorer всё показывает нормально. Но у него же свой драйвер.
PD>И еще — нет ли чего-то подозрительного в Event Viewer ?
После перезагрузки пролистал, ничего привлекающего внимание не нашёл.
Здравствуйте, CaptainFlint, Вы писали:
CF>Process Explorer всё показывает нормально. Но у него же свой драйвер.
Конечно. Но данные из одного источника — ОС. Раз PE работает нормально, значит, дело не в ОС скорее всего.
В сети есть информация, как удалить Process Hacker. Посмотри, может поможет.
И еще. Причиной таких фокусов с цветами была в свое время утечка GDI ресурсов. Когда их количество в одном из процессов достигало 10000, на экране творилось черт знает что. Не знаю, починили ли и сомневаюсь, что это причина в данном случае. И все же проверь через Task Manager
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>В сети есть информация, как удалить Process Hacker. Посмотри, может поможет.
Что-то не удаётся нагуглить, всё забито рекламой всяких супер-пупер-удаляторов. Но я там просто не вижу, что может требовать какого-то хитрого удаления. Ветку драйвера в CurrentControlSet\Services я уже прибил. Помнится, раньше для софтварных драйверов создавались какие-то странные ветки в CurrentControlSet\Enum\Root\LEGACY_..., но в текущей системе я там ничего подобного не вижу. Поиск упоминаний по всему реестру тоже ничего не даёт. И после такого вот состояния я перезагружал систему и пробовал запускать ProcHacker снова, с установкой драйвера. Результат не менялся.
PD>И еще. Причиной таких фокусов с цветами была в свое время утечка GDI ресурсов. Когда их количество в одном из процессов достигало 10000, на экране творилось черт знает что. Не знаю, починили ли и сомневаюсь, что это причина в данном случае. И все же проверь через Task Manager
Так эта поломка сразу после перезагрузки проявилась (у меня ProcHacker в автозагрузке, с админ-правами стартует), не мог какой-то процесс сразу вот так взять и всё мгновенно сожрать. Ну, в смысле, мог, но маловероятно, и проявилось бы раньше. Плюс я после этого ещё пару раз перезагружался. Но на всякий случай глянул — максимум полторы тысячи GDI у пары процессов есть. У всех остальных — меньше тысячи.
Здравствуйте, reversecode, Вы писали:
R>скачайте исходники и посмотрите что да как
Это дело не на пять минут. Тем более, скорее всего придётся компилировать и дебажить в рантайме, так как неизвестно, какие ответы возвращаются разными функциями и какие ветки выполняются в зависимости от этих ответов.
R>а ProcessExplorer мелкософтовский как себя ведет? R>или он уже на новой винде не пашет
Наоборот, Process Explorer постоянно допиливается Руссиновичем под современные винды. Правда, я перестал его обновлять, когда он превратил красивенькую панель инструментов в какую-то жирную размазню… Но та версия, что у меня сейчас есть, работает и всё показывает.
Здравствуйте, reversecode, Вы писали:
R>после падение винды R>мог сломаться только реестр R>так что попробовать почистить все ветки реестра которые могут иметь отношение к нему
R>или в сорсах его глянуть куда он там что пишет R>или в бинарнике посмотреть R>или на глаз посерфить весь реестр
Никаких упоминаний ProcessHacker'а в реестре я не нашёл, не считая драйвера. Все настройки он пишет в AppData. По исходникам тоже не смог найти, чтобы он что-то писал в реестр помимо этой драйверной ветки.
Здравствуйте, CaptainFlint, Вы писали:
CF>Драйвер не запустился, prochacker стартанул в бездрайверном режиме. Отключение-включение галочки использования драйвера не помогло.
А в бездрайверном режиме те же артефакты ?
Вообще-то чудес не бывает. Апдейты ты на систему не ставил, это можно исключить.
Остается одно — где-то есть неверные данные.
Можно тотально посмотреть в реестре все по "Process Hacker" (или просто по "Hacker") и удалить все, что там найдется. Осторожно, конечно!
Аналогично в AppData
Еще стоит проверить контрольные точки восстановления. Не запускать пока что процедуру восстановления, а просто посмотреть, какие продукты были затронуты после ее создания, там такое покажут. Апдейты ОС ты не ставил, а приложения какие-то ставил или обновлял ?
Здравствуйте, Pavel Dvorkin, Вы писали:
CF>>Драйвер не запустился, prochacker стартанул в бездрайверном режиме. Отключение-включение галочки использования драйвера не помогло.
PD>А в бездрайверном режиме те же артефакты ?
В safe mode запускается только в бездрайверном, в том числе если включить опцию использования драйвера. Полагаю, он пытается установить-стартануть драйвер, обламывается и делает fallback в бездрайверный режим. Информация при этом отображается такая же, как в обычной загрузке в бездрайверном режиме. То есть оцветовка есть, информация о процессах есть, но для части системных процессов в колонке Elevation отображается N/A.
PD>Вообще-то чудес не бывает. Апдейты ты на систему не ставил, это можно исключить.
PD>Остается одно — где-то есть неверные данные.
Я подозреваю, что принудительный сброс машины мог какие-то данные где-то подпортить. Но какие и где, ума не приложу, да ещё чтоб такой избирательный эффект дало.
PD>Можно тотально посмотреть в реестре все по "Process Hacker" (или просто по "Hacker") и удалить все, что там найдется. Осторожно, конечно! PD>Аналогично в AppData
Это я уже. В AppData (да и вообще по всему диску по proc.*hacker) нашлась только папочка с настройками программы, я уже пробовал её переименовывать и запускать прогу с нулевыми настройками. На работоспособность драйверного режима это не повлияло.
В реестре по слову Hacker, кроме драйвера, нашлась лишь пара упоминаний исполняемого файла программы: в AppCompat и в ветке Services\bam\State\UserSettings\USER_ID. Удалил обоих (при закрытом Хакере, разумеется), но тоже никаких видимых изменений это не дало.
PD>Еще стоит проверить контрольные точки восстановления. Не запускать пока что процедуру восстановления, а просто посмотреть, какие продукты были затронуты после ее создания, там такое покажут. Апдейты ОС ты не ставил, а приложения какие-то ставил или обновлял ?
Последняя точка была очень задолго до сегодня. Если это выстрелило что-то из тогдашних обновлений, оно бы выстрелило намного раньше. Я обычно обновления системы, драйверов и крупных программ ставлю, лишь когда по той или иной причине приходится перезагружаться. А так комп у меня работает с непрерывным аптаймом (иногда с уходом в hibernate). Бывает, обновляю всякие мелкие портативные прожки, которые никак не могут оказывать общесистемное влияние (типа KeePass, Total Commander, 7-zip…). Единственное исключение: где-то в районе месяца или двух назад я обновил графический драйвер (nVidia), без перезагрузки, и точку восстановления оно не создало. Теоретически допускаю, что этот сбой в ProcHacker'е может быть каким-то отложенным последствием обновления видеодрайвера, по какой-то причине проявившимся лишь после перезагрузки. Но учитывая, что драйверный инсталлятор никакой перезагрузки не потребовал, я предполагаю, что он все файлы смог обновить в рантайме, и эффект должен был бы проявиться раньше, хотя бы при рестарте ProcHacker'а.