Udostępnij przez


Instalowanie niepodpisanego sterownika podczas programowania i testowania

Domyślnie 64-bitowe wersje systemu Windows Vista i nowszych wersji systemu Windows będą ładować sterownik trybu jądra tylko wtedy, gdy jądro może zweryfikować podpis sterownika. To domyślne zachowanie można jednak wyłączyć podczas wczesnego opracowywania sterowników i testowania niezautomatyzowanego. Deweloperzy mogą tymczasowo wyłączyć wymuszanie podpisu sterownika podczas ładowania, korzystając z jednego z poniższych mechanizmów. Jednak aby w pełni zautomatyzować testowanie sterownika zainstalowanego przez wtyczkę Plug and Play (PnP), należy podpisać plik katalogu sterownika. Podpisywanie sterownika jest wymagane, ponieważ system Windows Vista i nowsze wersje systemu Windows wyświetlają okno dialogowe podpisywania sterowników dla niepodpisanych sterowników, które wymagają od administratora systemu autoryzacji instalacji sterownika, potencjalnie uniemożliwiając każdemu użytkownikowi bez niezbędnych uprawnień do instalowania sterownika i korzystania z urządzenia. Nie można wyłączyć tego zachowania instalacji sterownika PnP w systemie Windows Vista i nowszych wersjach systemu Windows.

Użyj opcji zaawansowanego rozruchu F8

System Windows Vista i nowsze wersje systemu Windows obsługują opcję zaawansowanego rozruchu F8 - "Wyłącz wymuszanie podpisu sterownika" - która wyłącza wymuszanie podpisu podczas ładowania dla sterownika trybu jądra systemu wyłącznie na bieżącą sesję systemu. To ustawienie nie jest utrwalane w przypadku ponownych uruchomień systemu.

Dołączanie debugera jądra w celu wyłączenia weryfikacji podpisu

Dołączanie aktywnego debugera jądra do komputera programistycznego lub testowego powoduje wyłączenie wymuszania sygnatury czasu ładowania dla sterowników trybu jądra. Aby użyć tej konfiguracji debugowania, dołącz komputer debugowania do komputera programistycznego lub testowego i włącz debugowanie jądra na komputerze programistycznym lub testowym, uruchamiając następujące polecenie:

bcdedit -debug on

Aby można było używać bcDEdit, użytkownik musi być członkiem grupy Administratorzy w systemie i uruchomić polecenie z wiersza polecenia z podwyższonym poziomem uprawnień. Aby otworzyć okno wiersza polecenia z podwyższonym poziomem uprawnień, utwórz skrót pulpitu do Cmd.exe, wybierz i przytrzymaj (lub kliknij prawym przyciskiem myszy) skrót, a następnie wybierz polecenie Uruchom jako administrator.

Wymuszanie weryfikacji podpisu Kernel-Mode w trybie debugowania jądra

Istnieją jednak sytuacje, w których deweloper może potrzebować dołączonego debugera jądra, ale również musi zachować wymuszanie sygnatury czasu ładowania. Na przykład gdy stos sterowników ma niepodpisany sterownik (taki jak sterownik filtru), który nie może załadować, może unieważnić cały stos. Ponieważ dołączanie debugera umożliwia załadowanie niepodpisanego sterownika, problem wydaje się zniknąć zaraz po dołączeniu debugera. Debugowanie tego typu problemu może być trudne.

Aby ułatwić debugowanie takich problemów, zasady podpisywania kodu trybu jądra obsługują następującą wartość rejestru:

HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlags

Ta wartość rejestru jest typu REG_DWORD i może być przypisana wartość na podstawie bitowego OR co najmniej jednej z następujących flag:

0x00000001
Ta wartość flagi konfiguruje jądro, aby włamywać się do debugera, jeśli sterownik jest niepodpisany. Deweloper lub tester może następnie załadować niepodpisany sterownik, wprowadzając g w wierszu polecenia debugera.

0x00000010
Ta wartość flagi konfiguruje jądro tak, aby ignorowało obecność debugera i zawsze blokowało ładowanie niepodpisanego sterownika.

Jeśli ta wartość rejestru nie istnieje w rejestrze lub ma wartość, która nie jest oparta na flagach opisanych wcześniej, jądro zawsze ładuje sterownik w trybie debugowania jądra niezależnie od tego, czy sterownik jest podpisany.

Uwaga Ta wartość rejestru domyślnie nie istnieje w rejestrze. Aby debugować weryfikację podpisu w trybie jądra, musisz utworzyć wartość .