Ejecución de ensamblados.NET "parcialmente confiables" desde un recurso compartido de red
security (4)
Con .NET 3.5 SP1, los ensamblados .NET que se ejecutan desde recursos compartidos UNC tienen permisos completos.
Vea Permitir que .exes de Brad Abrams se ejecute en una red compartida para soluciones y discusiones, y finalmente el seguimiento .NET 3.5 SP1 permite que el código administrado se inicie desde un recurso compartido de red .
Cuando intento ejecutar un ensamblado .NET ( boo.exe
) desde un recurso compartido de red (asignado a una unidad), falla porque solo es parcialmente confiable:
Unhandled Exception: System.Security.SecurityException: That assembly does not allow partially trusted callers.
at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
at BooCommandLine..ctor()
at Program..ctor()
at ProgramModule.Main(String[] argv)
The action that failed was:
LinkDemand
The assembly or AppDomain that failed was:
boo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67
The Zone of the assembly that failed was:
Intranet
The Url of the assembly that failed was:
file:///H:/boo-svn/bin/boo.exe
Con las instrucciones de una publicación de blog , agregué una política a la Configuración de .NET confiando totalmente en todos los ensamblados con el file:///H:/*
como su URL. Lo verifiqué ingresando el file:///H:/boo-svn/bin/boo.exe
URL file:///H:/boo-svn/bin/boo.exe
en la herramienta Evaluar ensamblaje en .NET Configuration y señalando que boo.exe tenía el permiso irrestricto (que no tener antes de la política).
Incluso con el permiso, boo.exe
no se ejecuta. Sigo teniendo el mismo mensaje de error.
¿Qué puedo hacer para solucionar este problema? ¿Hay alguna otra manera de ejecutar ensambles "parcialmente confiables" a partir de recursos compartidos de red sin tener que cambiar algo para cada ensamblaje que deseo ejecutar?
Creo que desea agregar el atributo AllowPartiallyTrustedCallers a su ensamblado. El mensaje de error implica que algo que está llamando a su ensamblado boo.exe no es completamente confiable, y boo.exe no tiene este atributo que lo permita.
Eche un vistazo al programa ''caspol.exe'' (provisto con tiempos de ejecución .NET). Deberá hacer esto en la máquina desde la que intenta ejecutar la aplicación. No pude ''marcar'' y ensamblar (probablemente solo yo). Sin embargo, al usar caspol y configurar el permiso adecuado para mi aplicación, LocalIntranet_Zone, soluciono mi problema similar.
He escuchado (pero aún no lo he probado), que .NET 3.5 sp1 eliminó este requisito de seguridad estricto (no permite que los ensamblados .NET residan en un recurso compartido de manera predeterminada).
caspol
el problema usando caspol
como se indica en la publicación de blog de Johnny Hughes. Ejecutando una aplicación .Net desde una red compartida :
caspol -addgroup 1.2 -url file:///H:/* FullTrust
Parece que la GUI de configuración de .NET para administrar las políticas simplemente no funciona.