Installazione di un driver senza segno durante lo sviluppo e il test
Per impostazione predefinita, le versioni a 64 bit di Windows Vista e versioni successive di Windows caricheranno un driver in modalità kernel solo se il kernel può verificare la firma del driver. Tuttavia, questo comportamento predefinito può essere disabilitato durante lo sviluppo iniziale del driver e per i test non automatizzati. Gli sviluppatori possono usare uno dei meccanismi seguenti per disabilitare temporaneamente l'imposizione del tempo di caricamento di una firma del driver valida. Tuttavia, per automatizzare completamente i test di un driver installato da Plug and Play (PnP), è necessario firmare il file di catalogo del driver. La firma del driver è necessaria perché Windows Vista e versioni successive di Windows visualizzano una finestra di dialogo di firma del driver per i driver non firmati che richiedono a un amministratore di sistema di autorizzare l'installazione del driver, impedendo potenzialmente a qualsiasi utente di installare il driver e usando il dispositivo. Questo comportamento di installazione del driver PnP non può essere disabilitato in Windows Vista e versioni successive di Windows.
Usare l'opzione di avvio avanzato F8
Windows Vista e versioni successive di Windows supportano l'opzione di avvio avanzato F8 , "Disabilita applicazione firma driver" che disabilita l'applicazione della firma in fase di caricamento per un driver in modalità kernel solo per la sessione di sistema corrente. Questa impostazione non persiste nei riavvii del sistema.
Collegare un debugger del kernel per disabilitare la verifica della firma
L'associazione di un debugger del kernel attivo a un computer di sviluppo o test disabilita l'applicazione della firma in fase di caricamento per i driver in modalità kernel. Per usare questa configurazione di debug, collegare un computer di debug a un computer di sviluppo o test e abilitare il debug del kernel nel computer di sviluppo o test eseguendo il comando seguente:
bcdedit -debug on
Per usare BCDEdit, l'utente deve essere membro del gruppo Administrators nel sistema ed eseguire il comando da un prompt dei comandi con privilegi elevati. Per aprire una finestra del prompt dei comandi con privilegi elevati, creare un collegamento desktop per Cmd.exe, selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) sul collegamento e scegliere Esegui come amministratore.
Applicazione della verifica della firma Kernel-Mode in modalità debug del kernel
Tuttavia, esistono situazioni in cui uno sviluppatore potrebbe dover avere un debugger del kernel collegato, ma deve anche mantenere l'applicazione della firma in fase di caricamento. Ad esempio, quando uno stack di driver ha un driver senza segno (ad esempio un driver di filtro) che non riesce a caricarlo può invalidare l'intero stack. Poiché il collegamento di un debugger consente al driver senza segno di caricare, il problema viene visualizzato non appena il debugger è collegato. Il debug di questo tipo di problema potrebbe risultare difficile.
Per facilitare il debug di tali problemi, i criteri di firma del codice in modalità kernel supportano il valore del Registro di sistema seguente:
HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlags
Questo valore del Registro di sistema è di tipo REG_DWORD e può essere assegnato un valore in base a un or bit per bit di uno o più dei flag seguenti:
0x00000001
Questo valore flag configura il kernel per l'interruzione nel debugger se un driver non è firmato. Lo sviluppatore o il tester può quindi scegliere di caricare il driver senza segno immettendo g al prompt del debugger.
0x00000010
Questo valore flag configura il kernel per ignorare la presenza del debugger e per bloccare sempre il caricamento di un driver non firmato.
Se questo valore del Registro di sistema non esiste nel Registro di sistema o ha un valore non basato sui flag descritti in precedenza, il kernel carica sempre un driver in modalità di debug del kernel indipendentemente dal fatto che il driver sia firmato.
Nota Questo valore del Registro di sistema non esiste nel Registro di sistema per impostazione predefinita. È necessario creare il valore per eseguire il debug della verifica della firma in modalità kernel.