Поделиться через


Установка неподписаного драйвера во время разработки и тестирования

По умолчанию 64-разрядные версии Windows Vista и более поздних версий Windows загружают драйвер режима ядра, только если ядро может проверить подпись драйвера. Однако это поведение по умолчанию может быть отключено во время разработки ранних драйверов и для неавтомированного тестирования. Разработчики могут использовать один из следующих механизмов, чтобы временно отключить принудительное применение допустимой подписи драйвера во время загрузки. Однако для полного автоматизации тестирования драйвера, установленного подключаемым модулем Plug and Play (PnP), необходимо подписать файл каталога драйвера. Подписывание драйвера требуется, так как Windows Vista и более поздние версии Windows отображают диалоговое окно подписывания драйвера для неподписанных драйверов, при установке которых требуется авторизация системным администратором, что потенциально предотвращает установку драйвера и использование устройства пользователями без необходимых привилегий. Это поведение установки драйвера PnP нельзя отключить в Windows Vista и более поздних версиях Windows.

Используйте параметр расширенной загрузки F8

Windows Vista и более поздние версии Windows поддерживают параметр расширенной загрузки F8 — "Отключить принудительное применение подписи драйверов", который отключает принудительное применение подписи во время загрузки для драйвера режима ядра только в текущем сеансе системы. Этот параметр не сохраняется во время перезапуска системы.

Подключение отладчика ядра для отключения проверки подписи

Присоединение активного отладчика ядра к компьютеру разработки или тестирования отключает принудительное применение подписи во время загрузки для драйверов в режиме ядра. Чтобы использовать эту конфигурацию отладки, подключите компьютер отладки к компьютеру разработки или тестирования и включите отладку ядра на компьютере разработки или тестирования, выполнив следующую команду:

bcdedit -debug on

Чтобы использовать BCDEdit, пользователь должен быть членом группы администраторов в системе и выполнить команду из командной строки с повышенными привилегиями. Чтобы открыть окно командной строки с повышенными привилегиями, создайте ярлык рабочего стола для Cmd.exe, выберите и удерживайте ярлык (или щелкните правой кнопкой мыши) и выберите команду "Запуск от имени администратора".

Применение проверки подписи Kernel-Mode в режиме отладки ядра

Однако существуют ситуации, в которых разработчику может потребоваться подключить отладчик ядра, но также необходимо поддерживать принудительное применение подписи во время загрузки. Например, если в стеке драйверов есть неподписанный драйвер (такой как драйвер фильтра), который не удается загрузить, это может сделать недействительным весь стек. Так как подключение отладчика позволяет загружать драйвер без знака, проблема исчезает сразу после подключения отладчика. Отладка такого типа проблемы может оказаться сложной.

Чтобы упростить отладку таких проблем, политика подписывания кода в режиме ядра поддерживает следующее значение реестра:

HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlags

Это значение реестра имеет тип REG_DWORD и может быть присвоено значение, основанное на побитовом ИЛИ одного или нескольких следующих флагов:

0x00000001
Это значение флага настраивает ядро на остановку выполнения в отладчике, если драйвер не подписан. Затем разработчик или тестировщик может загрузить неподписанный драйвер, введя g в запрос отладчика.

0x00000010
Это значение флага настраивает ядро игнорировать наличие отладчика и всегда блокировать загрузку незасертифицированного драйвера.

Если это значение реестра не существует в реестре или имеет значение, которое не основано на флагах, описанных ранее, ядро всегда загружает драйвер в режиме отладки ядра независимо от того, подписан ли драйвер.

Заметка Это значение реестра не существует в реестре по умолчанию. Для отладки проверки подписи в режиме ядра необходимо создать значение.