2008-08-23 24 views
11

Cuando trato de ejecutar un ensamblado de .NET (boo.exe) desde un recurso compartido de red (asignada a una unidad), se produce un error, ya que sólo está parcialmente confianza:en ejecución "de confianza" parcialmente ensamblados .NET desde un recurso compartido de red

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 a blog post, agregué una política a la Configuración de .NET confiando totalmente en todos los ensamblajes con file:///H:/* como su URL. Lo verifiqué ingresando la URL file:///H:/boo-svn/bin/boo.exe en la herramienta Evaluar ensamblaje en la Configuración .NET y señalando que boo.exe tenía el permiso No restringido (que no tenía 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?

Respuesta

5

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

Consulte Brad Abrams Allow .exes to be run off a network shares para la solución y las discusiones, y finalmente el seguimiento .NET 3.5 SP1 allows managed code to be launched from a network share.

+0

Esto no funciona en Windows 7 aparentemente –

+0

Interesante. Es posible que los archivos ejecutables bloqueados de Windows 7 se ejecuten en recursos compartidos de red, administrados o nativos. –

0

Creo que desea agregar el atributo AllowPartiallyTrustedCallers a su conjunto. 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.

2

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 oído (pero aún no lo he probado), que .NET 3.5 sp1 eliminó este requisito de seguridad estricto (no permitiendo que los ensamblados .NET residan en un recurso compartido de forma predeterminada).

3

que ha resuelto el problema mediante el uso de caspol como se indica en Johnny Hughes blog Running a .Net application from a network share:

caspol -addgroup 1.2 -url file:///H:/* FullTrust 

Parece que la GUI de configuración de .NET para la gestión de las políticas simplemente no funciona.

Cuestiones relacionadas