Como desabilitar a funcionalidade de bypass de nome forte

Desde o .NET Framework versão 3.5 Service Pack 1 (SP1), as assinaturas de nome forte não são validadas quando um assembly é carregado em um objeto AppDomain de confiança total, como o AppDomain padrão para a zona MyComputer. Isso é conhecido como o recurso de desvio de nome forte. Em um ambiente de confiança total, as exigências de StrongNameIdentityPermission sempre têm êxito para assemblies assinados de confiança total, independentemente de sua assinatura. A única restrição é que o assembly deve ser totalmente confiável porque sua zona é totalmente confiável. Como o nome forte não é um fator determinante sob essas condições, não há nenhum motivo para ser validado. Ignorar a validação de assinaturas de nome forte fornece melhorias significativas de desempenho.

O recurso de desvio se aplica a qualquer assembly de confiança total que não é assinado com atraso e que é carregado em qualquer AppDomain de confiança total no diretório especificado por sua propriedade ApplicationBase.

Você pode substituir o recurso de desvio para todos os aplicativos em um computador definindo um valor de chave do Registro. Você pode substituir a configuração de um único aplicativo usando um arquivo de configuração de aplicativo. Você não poderá restabelecer o recurso de desvio para um único aplicativo se ele tiver sido desabilitado pela chave do Registro.

Quando você substitui o recurso de desvio, o nome forte é validado somente para correção, ele não é verificado para um StrongNameIdentityPermission. Se você quiser confirmar um nome forte específico, precisará executar essa verificação separadamente.

Importante

A capacidade de forçar a validação de nome forte depende de uma chave do Registro, conforme descrito no procedimento a seguir. Se um aplicativo estiver em execução em uma conta que não tem permissão da ACL (lista de controle de acesso) para acessar essa chave do Registro, a configuração é ineficaz. Você deve garantir que os direitos da ACL estejam configurados para essa chave para que ela possa ser lida por todos os assemblies.

Desabilitar o recurso de bypass de nome forte para todos os aplicativos

  • Em computadores de 32 bits, no Registro do sistema, crie uma entrada DWORD com um valor de 0 chamada AllowStrongNameBypass sob a chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework.

  • Em computadores de 64 bits, no Registro do sistema, crie uma entrada DWORD com um valor de 0 chamada AllowStrongNameBypass sob as chaves HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework e HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework.

Desabilitar o recurso de bypass de nome forte para um único aplicativo

  1. Abra ou crie o arquivo de configuração de aplicativo.

    Para obter mais informações sobre esse arquivo, consulte a seção Arquivos de configuração de aplicativo em Configurar aplicativos.

  2. Adicione a seguinte entrada:

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

Para restaurar o recurso de bypass para o aplicativo, remova a definição do arquivo de configuração ou defina o atributo como true.

Observação

Você poderá ligar e desligar a validação de nome forte para um aplicativo somente se o recurso de desvio estiver habilitado para o computador. Se o recurso de desvio foi desativado para o computador, os nomes fortes são validados para todos os aplicativos e você não pode ignorar a validação para um único aplicativo.

Confira também