Executando aplicativos/bibliotecas .Net através de um endereço de rede
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



