Procedura: Disabilitare la funzionalità che consente di ignorare il nome sicuro
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
. Questo comportamento è reso possibile dalla funzionalità che consente di ignorare la verifica del nome sicuro. In un ambiente ad attendibilità totale le richieste di StrongNameIdentityPermission hanno sempre esito positivo per gli assembly ad attendibilità totale firmati, indipendentemente dalla firma. L'unica restrizione è che l'assembly deve essere ad attendibilità totale perché la relativa area è ad attendibilità totale. Poiché il nome sicuro non è un fattore determinante in queste condizioni, non esiste alcun motivo per cui venga validato. Se la convalida di firme con nome sicuro viene ignorata, si ottengono miglioramenti significativi delle prestazioni.
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.
È possibile ignorare questa funzionalità per tutte le applicazioni di un computer impostando il valore di una chiave del Registro di sistema. È possibile ignorare l'impostazione per una singola applicazione usando il relativo file di configurazione. Non è possibile ripristinare questa funzionalità per una singola applicazione se è stata disabilitata tramite la chiave del Registro di sistema.
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. Se si vuole verificare un nome sicuro specifico, è necessario eseguire il controllo separatamente.
Importante
La possibilità per forzare la convalida del nome sicuro dipende da una chiave del Registro di sistema, come descritto nella procedura seguente. 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. Assicurarsi che siano configurati diritti ACL per la chiave in modo che sia leggibile per tutti gli assembly.
Disabilitare la funzionalità che consente di ignorare il nome sicuro per tutte le applicazioni
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.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.
Disabilitare la funzionalità che consente di ignorare il nome sicuro per una singola applicazione
Aprire o creare il file di configurazione dell'applicazione.
Per altre informazioni su questo file, vedere la sezione File di configurazione dell'applicazione in Configurare le app.
Aggiungere la voce seguente:
<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
.
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. 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.