Vorgehensweise: Deaktivieren des Features zur Umgehung von starken Namen

Ab .NET Framework Version 3.5 Service Pack 1 (SP1) werden Signaturen mit starkem Namen nicht überprüft, wenn ein Assembly in ein vollständig vertrauenswürdiges AppDomain-Objekt geladen wird, wie etwa die Standard-AppDomain für die MyComputer-Zone. Dies wird Strong-Name-Bypass-Funktion genannt. In einer vollständig vertrauenswürdigen Umgebung sind Forderungen nach StrongNameIdentityPermission für signierte, vollständig vertrauenswürdige Assemblys immer erfolgreich, unabhängig von deren Signatur. Einzige Einschränkung ist die Tatsache, dass die Assembly vollständig vertrauenswürdig sein muss, da deren Zone vollständig vertrauenswürdig ist. Da der starke Name unter diesen Bedingungen kein bestimmender Faktor ist, gibt es auch keinen Grund, ihn zu validieren. Das Umgehen der Validierung einer Signatur mit starkem Namen führt zu deutlichen Verbesserungen in der Leistung.

Die Bypass-Funktion gilt für alle vollständig vertrauenswürdigen Assemblys, die nicht verzögert signiert wurden, und die in eine vollständig vertrauenswürdige AppDomain aus einem von der ApplicationBase-Eigenschaft angegebenen Verzeichnis geladen wurden.

Sie können die Bypass-Funktion für alle Anwendungen auf einem Computer deaktivieren, indem Sie einen Wert für den Registrierungsschlüssel festlegen. Sie können die Einstellung für eine einzelne Anwendung deaktivieren, indem Sie eine Anwendungskonfigurationsdatei verwenden. Sie können die Bypass-Funktion nicht für eine einzelne Anwendung wiederherstellen, wenn sie vom Registrierungsschlüssel deaktiviert wurde.

Wenn Sie die Bypass-Funktion deaktivieren, wird der starke Name nur auf Korrektheit geprüft. Er wird nicht auf StrongNameIdentityPermission geprüft. Wenn Sie einen bestimmten starken Namen überprüfen möchten, müssen Sie diesen Test separat durchführen.

Wichtig

Ob Sie die Möglichkeit haben, die Validierung eines starken Namens zu erzwingen, hängt vom Registrierungsschlüssel ab, wie in folgender Prozedur beschrieben. Wenn eine Anwendung unter einem Konto ausgeführt wird, dass keine ACL-Berechtigung (Access Control List) hat, um auf diesen Registrierungsschlüssel zuzugreifen, ist diese Einstellung unwirksam. Sie müssen sicherstellen, dass die ACL-Rechte für diesen Schlüssel so konfiguriert sind, dass er für alle Assemblys gelesen werden kann.

Deaktivieren des Features zur Umgehung von starken Namen für alle Anwendungen

  • Erstellen Sie auf 32-Bit-Computern in der Systemregistrierung einen DWORD-Eintrag mit dem Wert 0 und dem Namen AllowStrongNameBypass unter dem Schlüssel „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework“.

  • Erstellen Sie auf 64-Bit-Computern in der Systemregistrierung einen DWORD-Eintrag mit dem Wert 0 und dem Namen AllowStrongNameBypass unter den Schlüsseln „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework“ und „HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework“.

Deaktivieren des Features zur Umgehung von starken Namen für eine einzelne Anwendung

  1. Öffnen oder erstellen Sie die Anwendungskonfigurationsdatei.

    Weitere Informationen zu dieser Datei finden Sie im Abschnitt zu Anwendungskonfigurationsdateien unter Konfigurieren von Apps.

  2. Fügen Sie folgenden Eintrag hinzu:

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

Sie können das Umgehungsfeature für die Anwendung wiederherstellen, indem Sie die Einstellung der Konfigurationsdatei entfernen oder das Attribut auf true festlegen.

Hinweis

Sie können die Überprüfung von starken Namen für eine Anwendung nur dann aktivieren oder deaktivieren, wenn die Bypass-Funktion auf dem Computer aktiviert ist. Wenn die Bypass-Funktion auf dem Computer deaktiviert wurde, werden starke Namen für alle Anwendungen überprüft, und Sie können die Überprüfung nicht für eine einzelne Anwendung umgehen.

Siehe auch