Een niet-ondertekend stuurprogramma installeren tijdens ontwikkeling en testen
Standaard worden 64-bits versies van Windows Vista en latere versies van Windows alleen een stuurprogramma in de kernelmodus geladen als de kernel de handtekening van het stuurprogramma kan verifiëren. Dit standaardgedrag kan echter worden uitgeschakeld tijdens vroege ontwikkeling van stuurprogramma's en voor niet-geautomatiseerde tests. Ontwikkelaars kunnen een van de volgende mechanismen gebruiken om het afdwingen van een geldige stuurprogrammahandtekening tijdelijk uit te schakelen. Als u het testen van een stuurprogramma dat door Plug and Play (PnP) is geïnstalleerd, volledig wilt automatiseren, moet het catalogusbestand van het stuurprogramma zijn ondertekend. Het ondertekenen van het stuurprogramma is vereist omdat Windows Vista en latere versies van Windows een dialoogvenster weergeven voor het ondertekenen van stuurprogramma's wanneer niet-ondertekende stuurprogramma's moeten worden geïnstalleerd, waarvoor een systeembeheerder de installatie moet autoriseren. Dit verhindert mogelijk dat gebruikers zonder de benodigde bevoegdheden het stuurprogramma en het apparaat installeren. Dit installatiegedrag van het PnP-stuurprogramma kan niet worden uitgeschakeld op Windows Vista en latere versies van Windows.
Gebruik de F8 Geavanceerde Opstartoptie
Windows Vista en latere versies van Windows ondersteunen de F8 Advanced Boot Option -- "Disable Driver Signature Enforcement" -- waarmee het afdwingen van load-time signature voor een kernelmodusstuurprogramma alleen wordt uitgeschakeld voor de huidige systeemsessie. Deze instelling blijft niet behouden tijdens het opnieuw opstarten van het systeem.
Een kerneldebugger koppelen om handtekeningverificatie uit te schakelen
Als u een actief kernelfoutopsporingsprogramma koppelt aan een ontwikkel- of testcomputer, wordt het afdwingen van loadtimehandtekening voor kernelmodusstuurprogramma's uitgeschakeld. Als u deze foutopsporingsconfiguratie wilt gebruiken, koppelt u een foutopsporingscomputer aan een ontwikkel- of testcomputer en schakelt u kernelfoutopsporing in op de ontwikkel- of testcomputer door de volgende opdracht uit te voeren:
bcdedit -debug on
Als u BCDEdit wilt gebruiken, moet de gebruiker lid zijn van de groep Administrators op het systeem en de opdracht uitvoeren vanaf een opdrachtprompt met verhoogde bevoegdheid. Als u een opdrachtpromptvenster met verhoogde bevoegdheid wilt openen, maakt u een snelkoppeling op het bureaublad naar Cmd.exe, houdt u de snelkoppeling geselecteerd (of klikt u er met de rechtermuisknop op) en selecteert u Als administrator uitvoeren.
Verificatie van Kernel-Mode Handtekening Afdwingen in de Kernel Debugging Modus
Er zijn echter situaties waarin een ontwikkelaar mogelijk een kernel debugger moet hebben gekoppeld, maar ook de handhaving van de laadtijd-handtekening moet behouden. Als een stuurprogrammastack bijvoorbeeld een niet-ondertekend stuurprogramma (zoals een filterstuurprogramma) heeft dat niet kan worden geladen, kan dit de hele stack ongeldig maken. Omdat het koppelen van een foutopsporingsprogramma het niet-ondertekende stuurprogramma toestaat te laden, lijkt het probleem te verdwijnen zodra het foutopsporingsprogramma is gekoppeld. Het opsporen van fouten in dit type probleem kan lastig zijn.
Om foutopsporing van dergelijke problemen mogelijk te maken, ondersteunt het ondertekeningsbeleid voor kernelmoduscode de volgende registerwaarde:
HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlags
Deze registerwaarde is van het type REG_DWORDen kan een waarde worden toegewezen op basis van een bitsgewijze OF van een of meer van de volgende vlaggen:
0x00000001
Met deze vlagwaarde wordt de kernel geconfigureerd om in te breken in het foutopsporingsprogramma als een stuurprogramma niet is ondertekend. De ontwikkelaar of tester kan er vervolgens voor kiezen om het niet-ondertekende stuurprogramma te laden door g in te voeren bij de foutopsporingsprompt.
0x00000010
Met deze vlagwaarde wordt de kernel geconfigureerd om de aanwezigheid van het foutopsporingsprogramma te negeren en om te voorkomen dat een niet-ondertekend stuurprogramma niet kan worden geladen.
Als deze registerwaarde niet bestaat in het register of een waarde heeft die niet is gebaseerd op de eerder beschreven vlaggen, laadt de kernel altijd een stuurprogramma in de kernelfoutopsporingsmodus, ongeacht of het stuurprogramma is ondertekend.
Opmerking Deze registerwaarde bestaat niet standaard in het register. U moet de waarde creëren om de handtekeningverificatie in de kernelmodus te debuggen.