Installation d’un pilote non signé pendant le développement et le test

Par défaut, les versions 64 bits de Windows Vista et les versions ultérieures de Windows chargent un pilote en mode noyau uniquement si le noyau peut vérifier la signature du pilote. Toutefois, ce comportement par défaut peut être désactivé pendant le développement précoce du pilote et pour les tests non automatisés. Les développeurs peuvent utiliser l’un des mécanismes suivants pour désactiver temporairement l’application au moment du chargement d’une signature de pilote valide. Toutefois, pour automatiser entièrement le test d’un pilote installé par Plug-and-Play (PnP), le fichier catalogue du pilote doit être signé. La signature du pilote est requise, car Windows Vista et les versions ultérieures de Windows affichent une boîte de dialogue de signature de pilote pour les pilotes non signés qui nécessitent qu’un administrateur système autorise l’installation du pilote, ce qui peut empêcher tout utilisateur sans les privilèges nécessaires d’installer le pilote et d’utiliser l’appareil. Ce comportement d’installation du pilote PnP ne peut pas être désactivé sur Windows Vista et les versions ultérieures de Windows.

Utiliser l’option de démarrage avancé F8

Windows Vista et les versions ultérieures de Windows prennent en charge l’option de démarrage avancé F8 , « Désactiver l’application de signature du pilote », qui désactive l’application des signatures au moment du chargement pour un pilote en mode noyau uniquement pour la session système actuelle. Ce paramètre ne persiste pas entre les redémarrages du système.

Attacher un débogueur de noyau pour désactiver la vérification de signature

L’attachement d’un débogueur de noyau actif à un ordinateur de développement ou de test désactive l’application de signature au moment du chargement pour les pilotes en mode noyau. Pour utiliser cette configuration de débogage, attachez un ordinateur de débogage à un ordinateur de développement ou de test, puis activez le débogage du noyau sur l’ordinateur de développement ou de test en exécutant la commande suivante :

bcdedit -debug on

Pour utiliser BCDEdit, l’utilisateur doit être membre du groupe Administrateurs sur le système et exécuter la commande à partir d’une invite de commandes avec élévation de privilèges. Pour ouvrir une fenêtre d’invite de commandes avec élévation de privilèges, créez un raccourci bureau pour Cmd.exe, sélectionnez le raccourci et maintenez-le enfoncé (ou cliquez avec le bouton droit), puis sélectionnez Exécuter en tant qu’administrateur.

Application de Kernel-Mode vérification de signature en mode de débogage du noyau

Toutefois, il existe des situations dans lesquelles un développeur peut avoir besoin d’avoir un débogueur de noyau attaché, mais doit également maintenir l’application de la signature au moment du chargement. Par exemple, lorsqu’une pile de pilotes a un pilote non signé (tel qu’un pilote de filtre) qui ne parvient pas à se charger, elle peut invalider l’ensemble de la pile. Étant donné que l’attachement d’un débogueur permet au pilote non signé de se charger, le problème semble disparaître dès que le débogueur est attaché. Le débogage de ce type de problème peut être difficile.

Pour faciliter le débogage de ces problèmes, la stratégie de signature de code en mode noyau prend en charge la valeur de Registre suivante :

HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlags

Cette valeur de Registre est de type REG_DWORD et peut se voir attribuer une valeur basée sur un bit OU d’un ou plusieurs des indicateurs suivants :

0x00000001
Cette valeur d’indicateur configure le noyau pour qu’il s’insère dans le débogueur si un pilote n’est pas signé. Le développeur ou le testeur peut ensuite choisir de charger le pilote non signé en entrant g à l’invite du débogueur.

0x00000010
Cette valeur d’indicateur configure le noyau pour ignorer la présence du débogueur et pour toujours bloquer le chargement d’un pilote non signé.

Si cette valeur de Registre n’existe pas dans le Registre ou si elle a une valeur qui n’est pas basée sur les indicateurs décrits précédemment, le noyau charge toujours un pilote en mode débogage du noyau, que le pilote soit signé ou non.

Note Cette valeur de Registre n’existe pas dans le Registre par défaut. Vous devez créer la valeur pour déboguer la vérification de signature en mode noyau.