Вы находитесь на странице: 1из 3

EJECUTAR CDIGO CON TODOS LOS PERMISOS DESDE UN RECURSO DE RED

Esta pregunta ha surgido en uno de los cursos de campusMVP que imparto y me ha parecido interesante comentarla aqu. Resulta que un alumno tena un ejecutable que, entre otras cosas, necesitaba escribir una serie de registros en un inofensivo archivo de te to. !l ejecutar la aplicaci"n en local todo iba perfectamente, pero al hacerlo cuando el .e e estaba en una unidad de red compartida o en una carpeta remota el programa, l"gicamente, le rompa con un error de falta de permisos. El motivo de que no funcione el c"digo en estas circunstancias es que, al ejecutarlo desde la Red, el ejecutable cae bajo el conjunto de permisos #$ocal%ntranet# que es mucho m&s recortado que el conjunto normal que se aplica a los ejecutables .'E( y que se llama #)ull(rust#. $o primero que se debera hacer es declarar los permisos que el c"digo necesita para que al menos elruntime pueda saber qu* necesita esos permisos antes de #petar#, nada m&s intentar ejecutarla. +e este modo si se ejeucta sin los permisos suficientes advierte antes de ello y no se limita a romper cuando la aplicaci"n vaya a escribir a disco. Eso se consigue con este atributo aplicado al ensamblado, <Assembly:FileIOPermission(SecurityAction.RequestMinimun, Unrestricted:= rue!" +e esta forma declaras que tu ensamblado necesita permisos de acceso a disco y el runtime ya lo sabe antes de que se vaya a producir el error. !parte de eso se puede usar la herramienta de configuraci"n de seguridad para elevar los permisos de la carpeta compartida en la que est*n esos ejecutables. Est& en %nicio-Panel de control-.erramientas !dministrativas-Microsoft .'E( )rame/or0 1onfiguration . 2e puede cambiar el conjunto de permisos a aplicar a cada elemento que se pueda ejecutar en el sistema desde la interfa3 gr&fica. +ado que tendremos que hacerlo en cada equipo que lo vaya a ejecutar, si lo pudi*semos automati3ar desde lnea de comandos mejor. Para ello se puede usar desde la lnea de comandos la herramienta equivalentecaspol.e e y meterla en un .bat por ejemplo, as,

#$sPol.e%e &m &$' (.) &url *ile:++MiUnid$d,eRed+Mi#$r-et$+. Full rust +e esta forma indicas que se a4ada un nuevo conjuto de permisos a nivel de m&quina 56m7, para la intranet local 5grupo 8.97 que otorgue permisos totales a la carpeta de red indicada en la ruta. El asterisco final se puedes sustituir para coincidir con cualquier patr"n de archivo o por el nombre de un ejecutable concreto para afinar m&s. 2e puede ver el resultado en la herramienta gr&fica de la siguiente manera 5el grupo se ha creado sin nombre asociado7,

Pulsa para agrandar

Para ejecutar con * ito esta herramienta necesitas permisos de administrador, claro.

http://geeks.ms/blogs/jalarcon/archive/2007/07/02/ejecutar-c-243-digo-con-todos-los-permisosdesde-un-recurso-de-red.aspx