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

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

Использование параметра F8 Advanced Boot

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

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

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

bcdedit -debug on

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

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

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

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

HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlags

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

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

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

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

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