- Разбираемся с ошибкой загрузки из-за отсутствующей цифровой подписи драйвера в x64 системе
- Windows cannot verify the digital signature for the drivers required for this device. (Code 52)
- Replies (4)
- Как отключить проверку цифровой подписи драйвера в Windows 7
- Загрузка Windows 7 без проверки цифровой подписи
- Отключаем проверку подписи драйверов в Windows 7 с помощью групповой политики
- Отключаем проверку цифровой подписи драйверов в Windows 7 с помощью bcdedit
Разбираемся с ошибкой загрузки из-за отсутствующей цифровой подписи драйвера в x64 системе
В этой статье постараюсь описать методику диагностики проблем с неподписанными файлами драйверов в x64 битной версии Windows систем, из-за которых компьютер перестает загружаться и при загрузке падает в BSOD. Но систему все-таки можно загрузить, отключив проверку цифровой подписи при загрузке (F8 -> Disable Driver Signature Enforcement). В качестве примера в этой статье я буду работать с Windows Server 2008 R2 (которая, напомню, бывает только в 64-разрядной редакции), но данная методика подойдет так и для Windows 7 x64 и Vista x64.
Если вернуться к предыстории вопроса, то вспомним, что Microsoft приняла решение о том, что в 64-битных системах, начиная с Windows Vista, Windows загружает драйвера в режим ядра только в том случае, если драйвер имеет цифровую подпись. Если же цифровая подпись драйвера отсутствует, то при загрузке системы случается критическая ошибка (зависит от типа драйвера, загрузка которого заблокирована) и появляется экран BSOD. Конкретная ошибка и ее код зависят от конкретного драйвера, который заблокирован в процессе загрузки. Некоторые ошибок прямо на экране BSOD могут указывать на файл неподписанного драйвера.
В моем случае после обновления драйверов на сервере Windows 2008 r2 при обычной загрузки машины появился синий экран смерти с текстом:
STOP: c000021a (fatal System Error)
The initial session process or system process terminated unexpectedly with a status of 0x00000000 (0xc000428 0x00100448). The system has been shut down
Попробуем выяснить что это за ошибка, какой драйвер ее вызывает т определим по драйверу конкретное устройство.
Для декодирования ошибки нам нужен второй параметр (он выделен жирным) — 0xc000428.
Преобразуем hex код ошибки в более удобочитаемую форму. Для этого можно воспользоваться встроенной в Windows утилитой SLUI.EXE или же сопоставить код этой ошибки в файле ntstatus.h, найти который можно в Windows SDK. Воспользуемся первым способом, для чего в командной строке выполним:
Как вы видите на скриншоте, мы убедились в том, что BSOD вызвана невозможностью проверить цифровую подпись драйвера (“Windows cannot verify digital signature for this file”)
Перезагружаем наш компьютер и при загрузке жмем клавишу F8. В расширенном загрузочном меню (Advanced Boot Options) отключаем проверку цифровой подписи, выбрав Disable Driver Signature Enforcement .
В том случае, если в таком режиме сервер загрузиться, мы точно уверены в том, что некий неподписанный модуль или драйвер не позволяет системе нормально загрузиться.
Следующий шаг – определение файла проблемного модуля или драйвера. Откроем консоль журнал событий (Event Viewer) и перейдем в раздел Applications and Services Logs -> Microsoft -> Windows -> CodeIntegrity -> Operational.
Примечание: если при доступе к логам в этой ветке появляется ошибка “access denied”, создайте на диске c: каталог, предоставив группе Everyone полный доступ. Затем измените путь к файлу ETL на новый каталог, и отключите и заново включите логирование.
В моем случае, в журнале есть событие EventID 3001 с текстом «Code Integrity determined an unsigned kernel module \Device\HarddiskVolume1\Windows\System32\win32k.sys is loaded into the system. Check with the publisher to see if a signed version of the kernel module is available». Вот мы и нашли проблемный драйвер!
Данный драйвер может быть как родным драйвером Microsoft, так и драйвером стороннего разработчика. Удостоверимся, что данный драйвер действительно не имеет цифровой подписи. Для этого нам понадобится утилита от Sysinternals под названием SIGCHECK.EXE (взять ее можно тут http://technet.microsoft.com/en-us/sysinternals/bb897441).
Проверку наличия цифровой подписи выполним командой:
Если подпись отсутствует, то в поле Verified будет указано Unsigned (в противном случае, соответственно Signed).
Перед нами есть два варианта решения проблемы невозможности нормальной загруки системы с неподписанным драйвером:
- Найти подписанную версию драйвера
- Отказаться от использования данного драйвера (и устройства)
- отключить проверку цифровой подписи драйвера в Windows
Третий вариант может не подойти по тем или иным причинам. В первых двух случаях нам нужно определить к какому конкретному устройству относится данный файл драйвера .sys.
Как же определить устройство, зная лишь имя sys-файла? Я использую следующую методику (пусть нам нужно определить устройство, драйвер которого имеет имя HpCISSs2.sys):
1) Открываем редактор реестра и поиском по ветке HKEY_LOAL_MACHINE\SYSTEM\ControlSet001 ищем ключ со значением HpCISSs2.sys
2) В моем случае он нашелся в ветке HKEY_LOAL_MACHINE\SYSTEM\ControlSet001\services\HpCISSs2
3) Разворачиваем вложенную ветку с названием ENUM, нас интересует значение ключа 0, в моем случае это PCI\VEN_103C&DEV_3230&SUBSYS_3235103C&REV_01\4&3b416f2c&0&0018
4) Определяем, что производитель устройства имеет ID 103C, а код устройства 3230
5) Далее на сайте указываем в полях Vendor Search и Device Search найденные нами коды.
6) Получаем что искомое нами устройство контроллер жестких дисков HP Smart Array P400 Controller.
Нам осталось лишь найти новую версию драйвера на сайте производителя оборудования (внимательно смотрите для каких версий ОС подходит нужный вам драйвер) и обновить драйвер на компьютере.
Windows cannot verify the digital signature for the drivers required for this device. (Code 52)
I’m having help with my wireless driver: Windows cannot verify the digital signature for the drivers required for this device. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source. (Code 52)
Qualcomm Atheros AR9485 Wireless Network Adaptor
Replies (4)
Thank you for posting in Microsoft Community.
The driver may be unsigned or corrupted.
Go to the device manufacturer’s Web site and download and install the latest appropriate driver for the device.
Please try to un-install and install latest driver and check if it helps
Follow the steps below.
Press Windows + X, click on Device Manager.
In the list of hardware categories, look for the device that you want to update, and then double-tap or double-click the device name.
Click the Driver tab, tap or click Uninstall, Download the latest driver from manufacturer’s website and install.
Hope this helps. Please reply to us with the status of the issue.
Was this reply helpful?
Sorry this didn’t help.
Great! Thanks for your feedback.
How satisfied are you with this reply?
Thanks for your feedback, it helps us improve the site.
How satisfied are you with this reply?
Thanks for your feedback.
I tried but it said:
Qualcomm does not offer support or drivers to end consumers. Qualcomm sells Integrated Circuits (IC’s) to module manufacturers or other Original Equipment Manufacturers (OEM’s) and under contractual obligations cannot offer end user support. For issues regarding configuration and usage of your product, please contact the OEM’s technical support department. We suggest you refer to the manufacturer’s website, as they typically offer online technical support pages where software drivers, updates, and other related information can be obtained. You need to contact the OEM of your equipment directly as we are unable to support our chips once the manufacture has modified them for their particular use.
Was this reply helpful?
Sorry this didn’t help.
Great! Thanks for your feedback.
How satisfied are you with this reply?
Thanks for your feedback, it helps us improve the site.
Как отключить проверку цифровой подписи драйвера в Windows 7
В ОС Windows 7 Microsoft существенно ужесточила требованию к устанавливаемым драйверам (рекомендуем познакомиться с занимательной статьей об установке драйверов устройств в Windows 7). Теперь любой устанавливаемый драйвер должен иметь цифровую подпись, проверенную и сертифицированную Microsoft. Перед загрузкой и установкой драйвера любого устройства Windows 7 проверяет цифровую подпись этого драйвера. И если при попытке установить драйвер для нового устройства в Windows 7 вы увидите сообщение: «Windows can’t verify the publisher of this driver software», значит, данный драйвер не имеет цифровой подписи. В указанном диалогом окне можно выбрать вариант ”Install this driver software anyway” («Все равно установить этот драйвер»), однако в любом случае этот драйвер не установится, и значит, устройство работать не будет.
При установке неподписанного драйвера, в диспетчере устройств данное устройство будет помечено восклицательным знаком и содержать следующее сообщение об ошибке:
Windows cannot verify the digital signature for the drivers required for this device. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source. (Code 52)
Также о проблемах с цифровой подписью драйверов могут свидетельствовать такие ошибки: Device driver software was not successfully installed
Политика проверки цифровой подписи у драйверов работает как в 32-х (x86), так и в 64-х (x64) версиях Windows 7 и главная причина появления такой политики установки сторонних драйверов – желание улучшить стабильность и надежность ОС Windows, добившись того, чтобы все выпускаемые драйвера проходили через сертификационный тест и тест на совместимость в Microsoft.
К счастью в Windows 7 можно отключить проверку цифровой подписи драйвера. И сделать это можно несколькими способами:
- Самому подписать драйвер (сделать это можно с помощью специального софта, или по инструкции, описанной в мануале Как подписать цифровой подписью драйвер для Windows 7 x64)
- Отключить проверку цифровой подписи драйверов с помощью групповой политики
- Изменить режим загрузки ОС на загрузку без проверки цифровой подписи (с помощью bcdedit)
- Загрузить Windows 7 без проверки цифровой подписи (через загрузочное меню по клавише F8)
Рассмотрим все перечисленные варианты отключения проверки подписей драйверов
Загрузка Windows 7 без проверки цифровой подписи
Возможно временно отключить проверку подписей драйверов, если перегрузить систему, при загрузке нажать клавишу F8. В появившемся меню с вариантами загрузки системы выбрать пункт Disable Driver Signature Enforcement(«Отключение обязательной проверки подписи драйвера»).
После загрузки Win 7 можно будет установить неподписанный драйвер и протестировать его работу, однако если загрузиться в обычном режиме, драйвер работать не будет
Отключаем проверку подписи драйверов в Windows 7 с помощью групповой политики
В том случае, если вы полностью хотите отключить проверку подписывания драйверов в Windows 7, сделать это можно с помощью групповой политики.
В меню политик перейдите в раздел User Configuration->Administrative Templates-> System->Driver Installation.
В правой панели найдите пункт ‘Code Signing for Device Drivers’ и дважды щелкните по нему.
В появившемся окне выберите ‘Enabled’, а в нижнем меню — ‘Ignore’. Нажмите Ок и перезагрузите компьютер. После перезагрузи и применения политика, в своей Windows 7 вы полностью отключите подписывание драйверов, и сможете установить любые, в том числе, неподписанные драйвера.
Отключаем проверку цифровой подписи драйверов в Windows 7 с помощью bcdedit
Откройте командную строку с правами администратора и последовательно наберите следующие две команды:
После выполнения каждой из команд должно появиться сообщение о том, что команда выполнена успешно.
Перезагрузите компьютер и попробуйте установить неподписанный драйвер. Вуаля!
Если вам нужно отменить этот режим работы и вновь включить проверку цифровой подписи в win 7, выполните следующие команды: