Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: juancho77 en 11 Mayo 2008, 22:33 pm



Título: Copiar archivo a carpeta de solo lectura
Publicado por: juancho77 en 11 Mayo 2008, 22:33 pm
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?  :-\


Título: Re: Copiar archivo a carpeta de solo lectura
Publicado por: SKL (orignal) en 12 Mayo 2008, 03:50 am

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

sl2


Título: Re: Copiar archivo a carpeta de solo lectura
Publicado por: juancho77 en 12 Mayo 2008, 05:45 am
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?¿


Título: Re: Copiar archivo a carpeta de solo lectura
Publicado por: SERBice en 12 Mayo 2008, 06:24 am
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
  1. Dim Original As VbFileAttribute
  2. Dim Ruta As String
  3. Ruta = "C:\laruta"
  4. Original = getattr(Ruta)
  5. setattr(Ruta, vbnormal)
  6. '.... accion, filecopy por ejemplo....
  7. 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.


Título: Re: Copiar archivo a carpeta de solo lectura
Publicado por: juancho77 en 12 Mayo 2008, 06:56 am
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.


Título: Re: Copiar archivo a carpeta de solo lectura
Publicado por: SERBice en 12 Mayo 2008, 07:07 am
si, ha sido un fallo mio, ahora edito el post asi nadie se llev una sorpresa.