sexta-feira, novembro 17, 2006 

Executando aplicativos/bibliotecas .Net através de um endereço de rede

O .Net Framework possui recursos de segurança que bloqueiam a execução de aplicativos/bibliotecas quando estes estão hospedados em um endereço remoto, como por exemplo, um compartilhamento de rede que não seja a máquina local. Na tentativa de execução é disparada uma SecurityException.

Para contornar este problema é possível configurar facilmente o .Net Framework da máquina local para permitir a execução de aplicativos de um determinado endereço de rede. Esta configuração se dá através do CasPol.exe (Codde Acess Security Policy Tool) um utilitário que é instalado juntamente com o .Net Framework (estou usando o 2.0).

A seguir os procedimentos:
1) Acessar o prompt de comando do windows [Menu Iniciar | Programas | Acessórios | Prompt de comando]
2) Acessar a pasta do .Net Framework, por exemplo, "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>"
3) Digitar: ''caspol -m -ag LocalIntranet_Zone -url \\<servername>\<foldername>\* FullTrust -n "<name>" -d "<description>"''
4) Pronto! A partir deste momento deve ser possível executar os aplicativos .Net.
Observação: Se a máquina do endereço compartilhado estiver configurado como site confiável na máquina local, a configuração deverá ser feita em Trusted_zone e não LocalIntranet_zone.


Considerações
  • Endereço de compatilhamento: o endereço a ser informado no local "\\\\" deve ser exatamente o endereço compartilhado, ignorando toda e qualquer subpasta que por ventura seja o local correto de onde estará o aplicativo.
    Por exemplo:


    • *o aplicativo ABC está no endereço de rede "\\servidor\pastacompartilhada\repositorio\ABC.exe";

    • o endereço a ser informado no caspol.exe é apenas "\\servidor\pastacompartilhada\*" pois a pasta configurada como compartilhada no servidor é apenas "pastacompartilhada"


  • Sendo feito a configuração via caspol.exe nada mais é necessário. Ou seja, não é necessário utilizar os atributos AllowPartiallyTrustedCallers ou mesmo SuppressUnmanagedCodeSecurity;

  • Não é necessário que o aplicativo/biblioteca estejam assinados (.snk);

  • A exceção "System.Security.SecurityException: That assembly does not allow partially trusted callers" é uma das mais comuns mensagens de erro que ocorrem quando é iniciado a execução de um aplicativo/biblioteca em um endereço remoto e que não possui permissão "FullTrust".


Observação:além do caspol.exe, é possível efetuar esta configuração visualmente utilizando o utilitário disponível em [Menu Iniciar | Configurações | Ferramentas Administrativas | Microsoft .NET Framework 2.0 Configuration], selecionar [Runtime Security Policy | Machine | Code Groups | All code | LocalIntranet_zone] e então adicionar um novo grupo do tipo url e informar o endereço de rede.

Referências
  • How to: Grant Permissions to Folders and Assemblies

  • Code Access Security Policy Tool (Caspol.exe)

  • Running .NET apps from a network share
  • 0 Comentários:

    Postar um comentário

    << Home