Procedura: disabilitare la funzionalità che consente di ignorare il nome sicuroHow to: Disable the Strong-Name Bypass Feature

A partire da .NET Framework versione 3.5 Service Pack 1 (SP1), le firme con nome sicuro non vengono convalidate quando un assembly viene caricato in un oggetto AppDomain con attendibilità totale, ad esempio l'oggetto predefinito AppDomain per la zona MyComputer.Starting with the .NET Framework version 3.5 Service Pack 1 (SP1), strong-name signatures are not validated when an assembly is loaded into a full-trust AppDomain object, such as the default AppDomain for the MyComputer zone. Questo comportamento è reso possibile dalla funzionalità che consente di ignorare la verifica del nome sicuro.This is referred to as the strong-name bypass feature. In un ambiente ad attendibilità totale le richieste di StrongNameIdentityPermission hanno sempre esito positivo per gli assembly ad attendibilità totale firmati, indipendentemente dalla firma.In a full-trust environment, demands for StrongNameIdentityPermission always succeed for signed, full-trust assemblies regardless of their signature. L'unica restrizione è che l'assembly deve essere ad attendibilità totale perché la relativa area è ad attendibilità totale.The only restriction is that the assembly must be fully trusted because its zone is fully trusted. Poiché il nome sicuro non è un fattore determinante in queste condizioni, non esiste alcun motivo per cui venga validato.Because the strong name is not a determining factor under these conditions, there is no reason for it to be validated. Se la convalida di firme con nome sicuro viene ignorata, si ottengono miglioramenti significativi delle prestazioni.Bypassing the validation of strong-name signatures provides significant performance improvements.

La funzionalità che consente di ignorare il nome sicuro si applica a qualsiasi assembly ad attendibilità totale che non abbia la firma ritardata e che sia caricato in un oggetto AppDomain ad attendibilità totale dalla directory specificata dalla proprietà ApplicationBase.The bypass feature applies to any full-trust assembly that is not delay-signed and that is loaded into any full-trust AppDomain from the directory specified by its ApplicationBase property.

È possibile ignorare questa funzionalità per tutte le applicazioni di un computer impostando il valore di una chiave del Registro di sistema.You can override the bypass feature for all applications on a computer by setting a registry key value. È possibile ignorare l'impostazione per una singola applicazione usando il relativo file di configurazione.You can override the setting for a single application by using an application configuration file. Non è possibile ripristinare questa funzionalità per una singola applicazione se è stata disabilitata tramite la chiave del Registro di sistema.You cannot reinstate the bypass feature for a single application if it has been disabled by the registry key.

Quando si ignora la funzionalità, il nome sicuro viene convalidato solo per verificare che sia corretto e non viene controllata la presenza di un oggetto StrongNameIdentityPermission.When you override the bypass feature, the strong name is validated only for correctness; it is not checked for a StrongNameIdentityPermission. Se si vuole verificare un nome sicuro specifico, è necessario eseguire il controllo separatamente.If you want to confirm a specific strong name, you have to perform that check separately.

Importante

La possibilità per forzare la convalida del nome sicuro dipende da una chiave del Registro di sistema, come descritto nella procedura seguente.The ability to force strong-name validation depends on a registry key, as described in the following procedure. Se un'applicazione è in esecuzione con un account che non ha l'autorizzazione Elenco di controllo di accesso (ACL) per l'accesso alla chiave del Registro di sistema, l'impostazione non ha alcun effetto.If an application is running under an account that does not have access control list (ACL) permission to access that registry key, the setting is ineffective. Assicurarsi che siano configurati diritti ACL per la chiave in modo che sia leggibile per tutti gli assembly.You must ensure that ACL rights are configured for this key so that it can be read for all assemblies.

Per disabilitare la funzionalità che consente di ignorare il nome sicuro per tutte le applicazioniTo disable the strong-name bypass feature for all applications

  • Nei computer a 32 bit creare nel Registro di sistema una voce DWORD con valore 0 denominata AllowStrongNameBypass nella chiave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework.On 32-bit computers, in the system registry, create a DWORD entry with a value of 0 named AllowStrongNameBypass under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework key.

  • Nei computer a 64 bit creare nel Registro di sistema una voce DWORD con valore 0 denominata AllowStrongNameBypass nelle chiavi HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework e HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework.On 64-bit computers, in the system registry, create a DWORD entry with a value of 0 named AllowStrongNameBypass under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework and HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework keys.

Per disabilitare la funzionalità che consente di ignorare il nome sicuro per una singola applicazioneTo disable the strong-name bypass feature for a single application

  1. Aprire o creare il file di configurazione dell'applicazione.Open or create the application configuration file.

    Per altre informazioni su questo file, vedere la sezione File di configurazione dell'applicazione in Configurazione delle app.For more information about this file, see the Application Configuration Files section in Configuring Apps.

  2. Aggiungere quanto segue:Add the following entry:

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

È possibile ripristinare la funzionalità per l'applicazione rimuovendo l'impostazione del file di configurazione oppure impostando l'attributo su "true".You can restore the bypass feature for the application by removing the configuration file setting or by setting the attribute to "true".

Nota

È possibile attivare e disattivare la convalida dei nomi sicuri per un'applicazione solo se nel computer è attivata la funzionalità che consente di ignorare il nome sicuro.You can turn strong-name validation on and off for an application only if the bypass feature is enabled for the computer. Se la funzionalità è stata disattivata per il computer, i nomi sicuri vengono convalidati per tutte le applicazioni e non è possibile ignorare la convalida per una singola applicazione.If the bypass feature has been turned off for the computer, strong names are validated for all applications and you cannot bypass validation for a single application.

Vedere ancheSee Also

Sn.exe (strumento Nome sicuro)Sn.exe (Strong Name Tool)
Elemento <bypassTrustedAppStrongNames><bypassTrustedAppStrongNames> Element
Creazione e utilizzo degli assembly con nome sicuroCreating and Using Strong-Named Assemblies