Copiar archivo a carpeta de solo lectura

Iniciado por juancho77, 11 Mayo 2008, 22:33 PM

0 Miembros y 1 Visitante están viendo este tema.

juancho77

Tengo una carpeta con atributos de solo lectura y quiero copiar un archivo mediante una aplicacion, pero me tira un error (ERROR 70: Permiso Denegado). Sin embargo, si lo hago manualmente se puede hacer tranquilamente.
Para que se vea mas claro, estoy trabajando en un modulo de prop p2p y quiero copiar el servidor del bot en la carpeta que seria "C:\Documents and Settings\*PC*\Configuración local\Datos de programa\Ares\My Shared Folder".

Ya probe con un filesystem object y con el filecopy, pero no se puede. Alguna manito?  :-\

SKL (orignal)


recorre toda la carpeta, cambia de atributo a los archivos, copialo, pegalo y volve a cambiarlo a solo lectura...

sl2

juancho77

#2
No probe recorriendo todos todavia, pero estuve un buen rato probando con setattr y me pasa algo raro. Cambio los atributos perfecto, pero no puedo con la lectura. O sea, si le pongo "hidden" anda bien, pero si le quiero sacar el "readonly" no pasa nada. Como detalle, todos los archivos y carpetas en la opcion que dice "Solo Lectura" aparece el cuadradito tildado y sombreado. Si bien se puede cambiar manualmente, me parece una rareza. A que se puede deber?¿??¿

EDITADO: Averiguando algo mas, eso sombreado son los permisos heredados. Necesitaria cambiar los atributos del disco principal?¿

SERBice

#3
cuando esta sombreado es que la carpeta contiene arcivos de solo lectura, pero la carpeta en si misma puede no tener dicho atributo tildado.

usa setattr(vbnormal) para setear la carpeta en modo normal, luego puedes usar setattr para volverla a su estado original.

un brebe ejemplo NO FUNCIONAL para ue te des una idea:

Código (VB) [Seleccionar]
Dim Original As VbFileAttribute
Dim Ruta As String
Ruta = "C:\laruta"
Original = getattr(Ruta)
setattr(Ruta, vbnormal)
'.... accion, filecopy por ejemplo....
setattr(Ruta, Original)


eso deberia funcionar.

otra cosa que puedes hacer es un mapeo del directorio quitando todos los atributos de solo lectura, aunque con solo hacerlo en el directorio padre deberias poder copiar un archivo en el.

EDIT:

Se corrigio setattr(Original,vbnormal) por setattr(Ruta, Original)

gracias juancho77.

juancho77

Funciono ese ultimo codigo.  Yo estaba justo haciendo eso, pero no usaba variables para los parametros. No sabia (ni estoy convencido) de que haya diferencia. En fin, anduvo  :P

por si alguien lo lee alguna vez   setattr(Original, vbnormal)
Ahi iria la variable ruta y al lado la variable original. Saludos y gracias por todo.

SERBice

si, ha sido un fallo mio, ahora edito el post asi nadie se llev una sorpresa.