elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [RESUELTO]¿como comprobar varios resultados en un solo valor? - GetFileAttribute
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [RESUELTO]¿como comprobar varios resultados en un solo valor? - GetFileAttribute  (Leído 2,146 veces)
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
[RESUELTO]¿como comprobar varios resultados en un solo valor? - GetFileAttribute
« en: 23 Agosto 2011, 06:58 am »

el api GetFileAttributes en un solo resultado devuelve todos los atributos de un archivo ejem : +s +r / +s +r +h o lo que sea, para comprobar cada atributo que devuelva en ese UNICO resultado lo hago de esta forma

Código:
if res = FILE_ATTRIBUTES_SYSTEM then atributos = atributos & "+S "
if res = FILE_ATTRIBUTES_HIDDEN then atributos = atributos & "+H"
if res = FILE_ATTRIBUTES_READONLY + FILE_SYSTEMHIDDEN then atributos = atributos & "+R +H "[

weno y asi se hace todo como en 30 lineas :S, ¿habra alguna manera mas simplificada de comprobar sin tanto codigo? ¿podrian dar alguna explicacion? o url donde expliquen.


« Última modificación: 28 Agosto 2011, 07:10 am por AlxSpy » En línea

AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: ¿como comprobar varios resultados en un solo valor? - GetFileAttributes
« Respuesta #1 en: 25 Agosto 2011, 02:13 am »

logre simplificar mi codigo de 30 lineas a 9 lineas:

Código:
    Dim Atributos As String, Res As Long
    Res = GetFileAttributes(txtFile.Text)
   
    If Res = FILE_ATTRIBUTE_NORMAL Then Res = Res - FILE_ATTRIBUTE_NORMAL: Atributos = Atributos & "+N "
   
    If Res >= FILE_ATTRIBUTE_ARCHIVE And Res <= (FILE_ATTRIBUTE_ARCHIVE + FILE_ATTRIBUTE_HIDDEN + FILE_ATTRIBUTE_READONLY + FILE_ATTRIBUTE_SYSTEM) Then Res = Res - FILE_ATTRIBUTE_ARCHIVE: Atributos = Atributos & "+A "
   
    If Res >= FILE_ATTRIBUTE_DIRECTORY And Res <= (FILE_ATTRIBUTE_DIRECTORY + FILE_ATTRIBUTE_HIDDEN + FILE_ATTRIBUTE_READONLY + FILE_ATTRIBUTE_SYSTEM) Then Res = Res - FILE_ATTRIBUTE_DIRECTORY: Atributos = Atributos & "+D "
 
    If Res >= FILE_ATTRIBUTE_SYSTEM Then Res = Res - FILE_ATTRIBUTE_SYSTEM: Atributos = Atributos & "+S"
   
       
    If Res >= FILE_ATTRIBUTE_HIDDEN Then Res = Res - FILE_ATTRIBUTE_HIDDEN: Atributos = Atributos & "+H "
   
   
    If Res >= FILE_ATTRIBUTE_READONLY Then Res = Res - FILE_ATTRIBUTE_READONLY: Atributos = Atributos & "+R "
   
    MsgBox Atributos


En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.142


I'Love...!¡.


Ver Perfil WWW
Re: ¿como comprobar varios resultados en un solo valor? - GetFileAttributes
« Respuesta #2 en: 25 Agosto 2011, 03:05 am »

.
Nada que ver...

Lee algo sobre Operaciones binarias... ademas le faltan muchos mas atributos aqui te dejo mi codigo.

Código
  1.  
  2. Option Explicit
  3.  
  4. Enum FILE_ATTRIBUTE
  5.    [ReadOnly] = &H1
  6.    Hidden = &H2
  7.    System = &H4
  8.    'not used = &H8
  9.    DIRECTORY = &H10
  10.    Archive = &H20
  11.    Device = &H40
  12.    Normal = &H80
  13.    Temporaly = &H100
  14.    SparseFile = &H200
  15.    ReparsePoint = &H400
  16.    Compressed = &H800
  17.    Offline = &H1000
  18.    NotContentIndexed = &H2000
  19.    Encrypted = &H4000
  20.    NoExits = &HFFFFFFFF
  21. End Enum
  22.  
  23. Private Declare Function GetFileAttributes Lib "kernel32.dll" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
  24.  
  25. Private Sub Form_Load()
  26. Dim sRet        As String
  27. Dim lRes        As Long
  28. Const RUTA As String = "c:\aaaa"
  29.  
  30.    lRes = GetFileAttributes(RUTA)
  31.  
  32.    If ((lRes And FILE_ATTRIBUTE.NoExits) = FILE_ATTRIBUTE.NoExits) Then
  33.        sRet = "No Exits This File: " & RUTA
  34.    Else
  35.        If ((lRes And FILE_ATTRIBUTE.Normal) = FILE_ATTRIBUTE.Normal) Then sRet = sRet & "+N "
  36.        If ((lRes And FILE_ATTRIBUTE.Archive) = FILE_ATTRIBUTE.Archive) Then sRet = sRet & "+A "
  37.        If ((lRes And FILE_ATTRIBUTE.DIRECTORY) = FILE_ATTRIBUTE.DIRECTORY) Then sRet = sRet & "+D "
  38.        If ((lRes And FILE_ATTRIBUTE.System) = FILE_ATTRIBUTE.System) Then sRet = sRet & "+S "
  39.        If ((lRes And FILE_ATTRIBUTE.Hidden) = FILE_ATTRIBUTE.Hidden) Then sRet = sRet & "+H "
  40.        If ((lRes And FILE_ATTRIBUTE.[ReadOnly]) = FILE_ATTRIBUTE.[ReadOnly]) Then sRet = sRet & "+R "
  41.        If ((lRes And FILE_ATTRIBUTE.Temporaly) = FILE_ATTRIBUTE.Temporaly) Then sRet = sRet & "+Temporaly "
  42.        If ((lRes And FILE_ATTRIBUTE.SparseFile) = FILE_ATTRIBUTE.SparseFile) Then sRet = sRet & "+SparseFile "
  43.        If ((lRes And FILE_ATTRIBUTE.ReparsePoint) = FILE_ATTRIBUTE.ReparsePoint) Then sRet = sRet & "+ReparsePoint "
  44.        If ((lRes And FILE_ATTRIBUTE.Compressed) = FILE_ATTRIBUTE.Compressed) Then sRet = sRet & "+Compressed "
  45.        If ((lRes And FILE_ATTRIBUTE.Offline) = FILE_ATTRIBUTE.Offline) Then sRet = sRet & "+Offline "
  46.        If ((lRes And FILE_ATTRIBUTE.NotContentIndexed) = FILE_ATTRIBUTE.NotContentIndexed) Then sRet = sRet & "+NotContentIndexed "
  47.        If ((lRes And FILE_ATTRIBUTE.Encrypted) = FILE_ATTRIBUTE.Encrypted) Then sRet = sRet & "+Encripted "
  48.    End If
  49.  
  50.    MsgBox sRet
  51.  
  52. End Sub
  53.  
  54.  

Dulces Lunas!¡.
« Última modificación: 25 Agosto 2011, 03:26 am por BlackZeroX▓▓▒▒░░ » En línea




CScript (Actualizado 26/06/2013).

FileX <-- Re-modelando...
Web Principal-->[ Blog(VB6/C/C++) | Host File | Scan Port) ]

The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilit y el metal mi relig
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.142


I'Love...!¡.


Ver Perfil WWW
Re: ¿como comprobar varios resultados en un solo valor? - GetFileAttributes
« Respuesta #3 en: 25 Agosto 2011, 03:29 am »

te dejo un enlace a un libro que seguro lo encuentras algo interesante...

http://books.google.com/books?id=ZDin4axsYoEC&pg=PA164&lpg=PA164&dq=FILE_ATTRIBUTE+%26h40&source=bl&ots=x539D8QqWX&sig=-8IXCtdv4bN13SuE-sD5MHYqt6o&hl=es&ei=jaJVTtSgK-yCsgLEnp26Bw&sa=X&oi=book_result&ct=result&resnum=4&ved=0CDkQ6AEwAw#v=onepage&q&f=false

Dulces Lunas!¡.
En línea




CScript (Actualizado 26/06/2013).

FileX <-- Re-modelando...
Web Principal-->[ Blog(VB6/C/C++) | Host File | Scan Port) ]

The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilit y el metal mi relig
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: ¿como comprobar varios resultados en un solo valor? - GetFileAttributes
« Respuesta #4 en: 27 Agosto 2011, 02:27 am »

ve yo que pense que me faltaba solo el atributo temporary xP, veo que se reduce aun mas usando el and, leere eso de las operaciones binarias weno gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines