Procédure : Désactiver la fonctionnalité de contournement des noms forts

À partir du .NET Framework version 3.5 Service Pack 1 (SP1), les signatures de noms forts ne sont pas validées quand un assembly est chargé dans un objet AppDomain de confiance totale, tel que le AppDomain par défaut pour la zone MyComputer. Cette fonctionnalité permet d’ignorer les noms forts. Dans un environnement de confiance totale, les demandes de StrongNameIdentityPermission aboutissent toujours pour les assemblys de confiance totale signés, quelle que soit leur signature. La seule restriction est que l’assembly doit être entièrement fiable, car sa zone est entièrement fiable. Le nom fort n’étant pas un facteur déterminant dans ces conditions, il n’y a aucune raison pour qu’il soit validé. Ignorer la validation des signatures de noms forts fournit une amélioration significative des performances.

Cette fonctionnalité consistant à ignorer la validation s’applique à tout assembly de confiance totale qui n’est pas à signature différée et qui est chargé dans n’importe quel AppDomain de confiance totale à partir du répertoire spécifié par sa propriété ApplicationBase.

Vous pouvez outrepasser cette fonctionnalité pour toutes les applications sur un ordinateur en définissant une valeur de clé de Registre. Vous pouvez remplacer le paramètre pour une application unique en utilisant un fichier de configuration. Vous ne pouvez pas rétablir cette fonctionnalité pour une application si elle a été désactivée par la clé de Registre.

Quand vous outrepassez cette fonctionnalité, seule l’exactitude du nom fort est validée ; aucune vérification n’est effectuée pour StrongNameIdentityPermission. Si vous souhaitez confirmer un nom fort spécifique, vous devez effectuer un contrôle distinct.

Important

La possibilité de forcer la validation des noms forts dépend d’une clé de Registre, comme décrit dans la procédure suivante. Si une application s’exécute sous un compte qui ne dispose pas de l’autorisation ACL (liste de contrôle d’accès) d’accès à cette clé de Registre, le paramètre est inefficace. Vous devez vérifier que les droits ACL sont configurés pour cette clé afin qu’elle puisse être lue pour tous les assemblys.

Désactiver la fonctionnalité consistant à ignorer les noms forts pour toutes les applications

  • Sur les ordinateurs 32 bits, dans le Registre système, créez une entrée DWORD avec la valeur 0 nommée AllowStrongNameBypass sous la clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework.

  • Sur les ordinateurs 64 bits, dans le Registre système, créez une entrée DWORD avec la valeur 0 nommée AllowStrongNameBypass sous les clés HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework and HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework keys.

Désactiver la fonctionnalité consistant à ignorer les noms forts pour une seule application

  1. Ouvrez ou créez le fichier de configuration de l’application.

    Pour plus d’informations sur ce fichier, consultez la section Fichiers de configuration de l’application dans Configuration des applications.

  2. Ajoutez l’entrée suivante :

    <configuration>  
      <runtime>  
        <bypassTrustedAppStrongNames enabled="false" />  
      </runtime>  
    </configuration>  
    

Vous pouvez restaurer la fonctionnalité pour l’application en supprimant le paramètre du fichier de configuration ou en affectant la valeur « true » à l’attribut.

Notes

Vous pouvez activer et désactiver la validation des noms forts pour une application uniquement si la fonctionnalité consistant à ignorer la validation est activée pour l’ordinateur. Si cette fonctionnalité a été désactivée pour l’ordinateur, les noms forts sont validés pour toutes les applications et vous ne pouvez pas ignorer la validation pour une application unique.

Voir aussi