2008-12-11 20 views
7

He escrito una aplicación C# Windows Forms para combinar los archivos y carpetas de una carpeta remota en una máquina (la carpeta "fuente" es una unidad mapeada - "Z: \ carpeta ") con otra carpeta remota en una máquina diferente (la carpeta" destino "es una ruta de acceso UNC a una carpeta compartida -" \\ nombre de equipo \ carpeta compartida "). Tengo permisos completos para ambas carpetas. Cuando ejecuto el programa en mi máquina local, funciona bien, pero cuando intento ejecutarlo desde dentro de la carpeta fuente falla con una excepción de seguridad.Ejecutar un programa .NET desde una unidad asignada o una carpeta compartida

El error ocurre al llamar al constructor de DirectoryInfo para la carpeta de destino (es decir, DirectoryInfo (@ "\\ computername \ sharedfolder"). Supongo que el problema se debe a que estoy ejecutando el programa desde una unidad asignada. ¿Alguna solución alternativa?


la excepción específica es: Solicitud de permiso de tipo 'System.Security.Permissions.FileIOPermission mscorlib versión = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' no


.

ACTUALIZACIÓN

bien, recibí mi aplicación en Visual Studio 2008 (fue codificada previamente en 2005), me centré en .NET 3.5, compilé y probé de nuevo.

Tengo el mismo error exacto.


ACTUALIZACIÓN - RESOLUCIÓN

he probado con .NET 3.5, y no funcionó, entonces me di cuenta de que usted ha dicho 3.5 SP1. El service pack es definitivamente necesario.

Problema resuelto. Gracias.

Respuesta

6

Debe habilitar los permisos FullTrust para la aplicación. Las aplicaciones .NET que se ejecutan en un recurso compartido de red tienen permisos de seguridad de Intranet local y, por lo tanto, se ejecutan en un entorno limitado.

Aquí hay un archivo por lotes que escribí para una de nuestras aplicaciones de prueba que se ejecuta fuera de la red. Debería ponerlo en funcionamiento con modificaciones menores.

@ECHO OFF 
SET CASPOL=%windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe 
CLS 

%CASPOL% -pp off 
%CASPOL% -m -ag 1.2 -url file://server/directory/* FullTrust 

Como se indicó anteriormente, .NET 3.5 elimina este comportamiento.

Cuestiones relacionadas