Partilhar via


Como: Desativar o recurso de bypass de nome forte

A partir do .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 de confiança AppDomain total, como o padrão AppDomain para a MyComputer zona. Isso é conhecido como o recurso de bypass de nome forte. Em um ambiente de confiança total, as demandas por StrongNameIdentityPermission assemblies assinados e de confiança total são sempre bem-sucedidas, 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 nessas condições, não há razão para que ele seja validado. Ignorar a validação de assinaturas de nome forte fornece melhorias significativas de desempenho.

O recurso de bypass aplica-se a qualquer assembly de confiança total que não seja assinado com atraso e que seja carregado em qualquer confiança AppDomain total a partir do diretório especificado por sua ApplicationBase propriedade.

Você pode substituir o recurso de bypass 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 do aplicativo. Não é possível restabelecer o recurso de bypass para um único aplicativo se ele tiver sido desabilitado pela chave do Registro.

Quando você substitui o recurso de bypass, o nome forte é validado apenas para correção; não é verificado para um StrongNameIdentityPermission. Se você quiser confirmar um nome forte específico, você tem que 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 sendo executado em uma conta que não tenha permissão de lista de controle de acesso (ACL) para acessar essa chave do Registro, a configuração será ineficaz. Você deve garantir que os direitos de ACL estejam configurados para essa chave para que ela possa ser lida para todos os assemblies.

Desative 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 nomeado AllowStrongNameBypass sob o HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\. Chave NETFramework.

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

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

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

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

  2. Adicione a seguinte entrada:

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

Você pode restaurar o recurso de bypass para o aplicativo removendo a configuração do arquivo de configuração ou definindo o atributo como true.

Nota

Você pode ativar e desativar a validação de nome forte para um aplicativo somente se o recurso de bypass estiver habilitado para o computador. Se o recurso de bypass tiver sido desativado para o computador, nomes fortes serão validados para todos os aplicativos e você não poderá ignorar a validação para um único aplicativo.

Consulte também