Page 1 of 1

cGetFile

PostPosted: Wed Apr 11, 2012 5:23 pm
by Sebastián Almirón
Hola a todos,

¿ Hay alguna manera de evitar que en un dialogo standard cGetFile se puedan borrar los archivos que aparecen pulsando Delete ?

Tengo una aplicación con una carpeta a la que ningún usuario puede acceder, ya que los ficheros que en ella se guarden deben pasar un control que solo realiza mi aplicación. De este modo si el usuario intenta acceder a esta carpeta desde el explorador, no le permite borrar ni editar los ficheros que contiene, salvo desde mi aplicación, ya que la misma se lanza mediante otra aplicación que la ejecuta como un usuario especial (algo así como el ejecutar como... de Windows), para que desde dentro de la aplicación si se pueda grabar en esa carpeta. El problema es que en el dialogo standar cGetFile, si se pulsa la tecla Delete se puede borrar el fichero seleccionado.

He mirado el parametro "flags" de cGetfile y no veo que esté contemplada esa limitación, con lo que tengo que buscar una solución para que esto no ocurra.
Al final los usuarios se buscan la manera de estropearte el invento :(

Re: cGetFile

PostPosted: Thu Apr 12, 2012 5:28 am
by Manuel Valdenebro
y si proteges las carpeta?

Re: cGetFile

PostPosted: Thu Apr 12, 2012 9:04 am
by Sebastián Almirón
Hola Manuel,

La carpeta está protegida contra escritura/modificación para todos los usuarios. Pero hay un usuario especial de red que si tiene estos permisos, imagina que este usuario es el administrador y que mi aplicación se ejecuta con la opción de windows "ejecutar como..." administrador (esto lo hago mediante un pequeño programa en VB que ejecuta mi aplicación mediante un runAs para evitar que los usuarios tengan que conocer el password del usuario "administrador"). Con esto, desde mi aplicación si se puede grabar ficheros en esa carpeta... pero en el dialogo cGetFile también se pueden borrar, cosa que no puedo permitir.

No se si habrá otro modo de hacer las cosas, algo como dar permisos de escritura/modificación a una aplicación, no a un usuario, pero hasta donde yo sé esto no es posible ¿O estoy equivocado?.

Saludos