Ejecutar ensamblados .NET "parcialmente confiables" desde un recurso compartido de red

StackOverflow https://stackoverflow.com/questions/24468

  •  09-06-2019
  •  | 
  •  

Pregunta

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 instrucciones de una publicación de blog, agregué una política a la configuración .NET confiando plenamente en todos los ensamblados con file:///H:/* como su URL.Verifiqué esto ingresando la URL file:///H:/boo-svn/bin/boo.exe en el Evaluar Asamblea herramienta en la configuración .NET y observando que boo.exe tenía la Irrestricto permiso (que no tenía antes de la política).

Incluso con el permiso, boo.exe no corre.Sigo teniendo el mismo mensaje de error.

¿Qué puedo hacer para depurar este problema?¿Existe otra forma de ejecutar ensamblados "parcialmente confiables" desde recursos compartidos de red sin tener que cambiar algo para cada ensamblado que quiero ejecutar?

¿Fue útil?

Solución

Con .NET 3.5 SP1, los ensamblados .NET que se ejecutan desde recursos compartidos UNC tienen permisos completos.

Ver Brad Abrams Permitir que .exes se ejecuten desde recursos compartidos de red para soluciones alternativas y discusiones, y finalmente el seguimiento .NET 3.5 SP1 permite ejecutar código administrado desde un recurso compartido de red.

Otros consejos

Resolví el problema usando caspol como se indica en la publicación del blog de Johnny Hughes Ejecutar una aplicación .Net desde un recurso compartido de red:

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.

Eche un vistazo al programa 'caspol.exe' (proporcionado con tiempos de ejecución .NET).Tendrá que hacer esto en la máquina desde la que intenta ejecutar la aplicación.No pude "marcar" ni ensamblar (probablemente solo yo).Sin embargo, usar caspol y configurar el permiso adecuado para mi aplicación, LocalIntranet_Zone, soluciona mi problema similar.

Escuché (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 forma predeterminada).

Creo que quieres agregar el Permitir llamadas parcialmente confiables atribuir a su asamblea.El mensaje de error implica que algo que llama a su ensamblado boo.exe no es totalmente confiable y boo.exe no tiene este atributo que lo permita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top