В этой статье мы рассмотрим, как диагностировать проблемы с неподписанными драйверами в 64-битных версиях Windows, из-за которых система может не загружаться и выдавать синий экран смерти (BSOD). Проблему можно временно обойти, отключив проверку цифровой подписи драйверов при загрузке (F8 > Disable Driver Signature Enforcement). Пример будет описан на основе Windows Server 2008 R2, но методика подойдет и для других 64-битных версий, таких как Windows 7 x64 и Vista x64.
Предыстория вопроса
Microsoft ввела обязательную проверку цифровой подписи драйверов, начиная с Windows Vista для 64-битных версий. Если драйвер не имеет цифровой подписи, система не может его загрузить, что вызывает критическую ошибку и появление BSOD. Конкретный код ошибки зависит от заблокированного драйвера.
Пример ошибки, с которой можно столкнуться:
STOP: c000021a (Fatal System Error)
The initial session process or system process terminated unexpectedly with a status of 0x00000000 (0xc000428 0x00100448).
Ошибка 0xc000428 указывает на то, что Windows не может проверить цифровую подпись драйвера.
Преобразуем hex код ошибки в более удобочитаемую форму. Для этого можно воспользоваться встроенной в Windows утилитой SLUI.EXE или же сопоставить код этой ошибки в файле ntstatus.h, найти который можно в Windows SDK. Воспользуемся первым способом, для чего в командной строке выполним:
Как вы видите на скриншоте, мы убедились в том, что BSOD вызвана невозможностью проверить цифровую подпись драйвера (“Windows cannot verify digital signature for this file”)
Шаг 1: Отключение проверки цифровой подписи
Для диагностики проблемы можно загрузить систему, отключив проверку цифровой подписи драйверов:
1. Перезагрузите компьютер.
2. Нажмите клавишу F8 при загрузке и выберите пункт Disable Driver Signature Enforcement в меню Advanced Boot Options.
Если система загружается без ошибок, это подтверждает наличие неподписанного драйвера, который блокирует нормальную загрузку системы.
Шаг 2: Определение проблемного драйвера
Для точной диагностики нужно определить, какой именно драйвер вызывает сбой. Для этого откроем Журнал событий:
1. Откройте Event Viewer и перейдите в раздел Applications and Services Logs > Microsoft > Windows > CodeIntegrity > Operational.
2. Найдите событие с EventID 3001, в котором будет указано, какой именно драйвер не прошел проверку цифровой подписи.
Пример сообщения:
Code Integrity determined that an unsigned kernel module \Device\HarddiskVolume1\Windows\System32\win32k.sys is loaded into the system.
Шаг 3: Проверка подписи драйвера с помощью Sigcheck
Чтобы убедиться, что указанный драйвер действительно не имеет цифровой подписи, используем утилиту sigcheck.exe от Sysinternals:
1. Загрузите sigcheck.exe с сайта Microsoft.
2. Выполните команду:
sigcheck.exe -i c:\Windows\System32\win32k.sys
Если драйвер не подписан, в поле Verified будет указано Unsigned.
Шаг 4: Решение проблемы
После того как проблемный драйвер определен, есть несколько вариантов решения проблемы:
1. Найти подписанную версию драйвера.
— Посетите сайт производителя оборудования, чтобы загрузить последнюю версию драйвера, которая имеет цифровую подпись.
2. Отказаться от использования драйвера.
— Если устройство не критично для работы системы, можно отключить его или удалить драйвер.
Шаг 5: Определение устройства по драйверу
Чтобы точно определить устройство, связанное с проблемным драйвером, можно воспользоваться редактором реестра:
1. Откройте regedit и найдите значение драйвера по пути HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services.
2. В разделе ENUM будет указан код устройства (например, PCI\VEN_103C&DEV_3230).
3. Используя код VEN (производитель) и DEV (устройство), можно определить точное оборудование.
4. Определяем, что производитель устройства имеет ID 103C, а код устройства 3230.
5. Далее на сайте devicehunt.com, (либо на любом похожем сайте по поиску устройств по ИД) указываем в полях Vendor Search и Device Search найденные нами коды.
6. Пролистываем вниз и ищем устройство PCI 103C с кодом 3230 и получаем контроллер жестких дисков HP Smart Array Controller.
Осталось лишь найти новую версию драйвера на сайте производителя оборудования (внимательно смотрите для каких версий ОС подходит нужный вам драйвер) и обновить драйвер на компьютере.
Заключение
Проблема с неподписанными драйверами может привести к невозможности загрузки системы. Используя утилиты для проверки цифровой подписи и инструменты диагностики Windows, можно определить проблемный драйвер и устранить ошибку, либо обновив драйвер до подписанной версии, либо отключив его.