Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: GameAndWatch en 24 Diciembre 2011, 08:33 am



Título: Como saber permisos de carpetas
Publicado por: GameAndWatch en 24 Diciembre 2011, 08:33 am
¡Hola! :D
Estoy creando un buscador de archivos que además te guarde en un txt todos los archivos encontrados. Con un poco de sudor,lo conseguí. ;D Pero me dí cuenta de un problema. No puedo buscar donde no tengo permisos.
¿Alguien sabe como puedo saber si tengo permisos sobre una carpeta? :huh:
Mi intención es que buscara en la raiz de un disco(D: por ejemplo) pero me topo con la carpeta de System Information y la verdad es que molesta un poco que se cuelgue por esto...
Tambien me sirve si existe una manera de buscar aunque no tenga permisos XD. :xD

¡Gracias de antemano por la respuesta!


Título: Re: Como saber permisos de carpetas
Publicado por: ThunderCls en 24 Diciembre 2011, 17:18 pm
Mi intención es que buscara en la raiz de un disco(D: por ejemplo) pero me topo con la carpeta de System Information y la verdad es que molesta un poco que se cuelgue por esto...
Tambien me sirve si existe una manera de buscar aunque no tenga permisos XD. :xD

Pues no se como estaras haciendo la busqueda (tal vez si pusieras algun code), pero no te entiendo bien. Se te cuelga la aplicacion al llegar a estas carpetas?, porque no deberia. En estos casos no te deja buscar en ellas, pero lo que hace es pasarla por alto y continuar con las demas. Igual puedes guiarte por aqui

http://foro.elhacker.net/programacion_cc/source_listando_directorios_y_archivos_en_cc-t166359.0.html


¿Alguien sabe como puedo saber si tengo permisos sobre una carpeta? :huh:

Con esto te servira
http://msdn.microsoft.com/en-us/library/aa446639%28v=VS.85%29.aspx

Saludos


Título: Re: Como saber permisos de carpetas
Publicado por: GameAndWatch en 25 Diciembre 2011, 08:53 am
¡Gracias por responder! :D
Pues estoy utilizando la función System.IO.Directory.GetFiles. El código es este:

Código
  1. Dim ruta_madre As Array
  2.            ruta_madre = System.IO.Directory.GetFiles(ruta)
  3.            For Each archivos_madre As String In ruta_madre
  4.                ListBox1.Items.Add(archivos_madre.ToString)
  5.                'funcion para escribir en el txt
  6.                Dim oSW As New IO.StreamWriter(salvable, True)
  7.                Dim Linea As String = archivos_madre.ToString & vbNewLine
  8.                oSW.WriteLine(Linea)
  9.                oSW.Flush()
  10.                oSW.Dispose()
  11.            Next
  12.  
  13.            Do
  14.                For Each archivos As String In System.IO.Directory.GetFiles(ruta & folders(x).Name, _
  15.                                                                                     "*", _
  16.                                                                                     System.IO.SearchOption.AllDirectories)
  17.  
  18.                    ListBox1.Items.Add(archivos.ToString)
  19.                    Dim oSW As New IO.StreamWriter(salvable, True)
  20.  
  21.                    Dim Linea As String = archivos.ToString & vbNewLine
  22.                    oSW.WriteLine(Linea)
  23.                    oSW.Flush()
  24.                    oSW.Dispose()
  25.  
  26.                Next
  27.                x = x + 1
  28.            Loop Until x = tope

El problema es que con esta función si encuentra la carpeta y al no tener permisos da error y para de listar(sale del  bucle).

He probado lo de GetFileSecurity,pero no me reconoce la variable... :-(


Título: Re: Como saber permisos de carpetas
Publicado por: ThunderCls en 25 Diciembre 2011, 15:21 pm
Upss...al parecer ambos hemos cometido un error...
-El codigo que te puse arriba es para c++ (no se porque pense que estaba en el foro de c++ cuando conteste al tema)...  :P

Pues estoy utilizando la función System.IO.Directory.GetFiles. El código es este:
-No aclarastes que estabas en .NET, y este foro es de VB por lo que el mejor lugar donde pueden aclararte mejor tu problema para este tema seria aqui:
http://foro.elhacker.net/net-b62.0/

El problema es que con esta función si encuentra la carpeta y al no tener permisos da error y para de listar(sale del  bucle).
Por otra parte, de .NET no te puedo decir mucho, solo que, en tu caso específico deberias añadir un manejador de errores en tu codigo para evitar que se interrumpa la ejecucion normal de la aplicacion al ocurrir una excepcion (lo que te esta sucediendo), puedes leer algo de eso por aqui:
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=433

He probado lo de GetFileSecurity,pero no me reconoce la variable... :-(
Igual, para poder usar la funcion GetFileSecurity (Win32 API function) en .NET debes hacer las respectivas declaraciones, puedes guiarte por aqui
http://www.webtropy.com/articles/art9-1.asp?f=GetFileSecurity

Todo lo que hay que hacer es buscar...y buscar bien  :rolleyes:
Saludos


Título: Re: Como saber permisos de carpetas
Publicado por: GameAndWatch en 25 Diciembre 2011, 16:59 pm
¡¡argh!! No me dí cuenta del error.Pensé que eran lo mismo(ya veo que no,que se parecen...me paso lo mismo con Java y javascript XD)

Vale,miraré en tu ayuda y si no lo consigo preguntaré en ese foro. :D
Y gracias por contestarme y perdón por las molestias.