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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  como saber si un directorio puede se modificado.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: como saber si un directorio puede se modificado.  (Leído 5,681 veces)
LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
como saber si un directorio puede se modificado.
« en: 5 Agosto 2010, 00:15 am »

Hola una pregunta como se si una carpeta o unidad puede ser escrita, por ejemplo si quisiera crear una carpeta en la unidad de cd no podría o por ejemplo si fuera una cuenta de usuario y quisiera crear una carpeta en un directorio donde no tengo privilegios tampoco podría.

se que puedo usar on error pero cual es la forma correcta?, GetAttr sirve en estos casos?

Saludos


En línea

Dznp

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: como saber si un directorio puede se modificado.
« Respuesta #1 en: 5 Agosto 2010, 00:25 am »

Sistema operativo?
Con PHP se puede, si necesitas ayuda avisame.


Ahora que veo CREO que respondí cualquier cosa..  ;D Crei que estaba en la sección de PHP, de igual manera se puede con visual basic, pero no es mi fuerte

Perdon  :silbar:


En línea

fary


Desconectado Desconectado

Mensajes: 1.061



Ver Perfil WWW
Re: como saber si un directorio puede se modificado.
« Respuesta #2 en: 5 Agosto 2010, 01:38 am »

Segun la msdn se supone qeu si ( http://msdn.microsoft.com/es-es/library/hds568h4%28VS.80%29.aspx ) pero lo que creo qeu no puedes saber es lo de los discos.. las carpetas si.

un salu2!
En línea

Un byte a la izquierda.
Angeldj27

Desconectado Desconectado

Mensajes: 199


Ahorra Agua... Beba Cerveza


Ver Perfil
Re: como saber si un directorio puede se modificado.
« Respuesta #3 en: 5 Agosto 2010, 16:49 pm »

Los discos si se pueden solo hay que chekar el tipo de unidad logica que es
En línea



"Que vamos a hacer Mañana?..... Lo mismo que hacemos todos los dias Pinky tratar de Conquistar el Mundoooo!!!!!
xkiz ™


Desconectado Desconectado

Mensajes: 1.252


Ver Perfil WWW
Re: como saber si un directorio puede se modificado.
« Respuesta #4 en: 5 Agosto 2010, 18:39 pm »

Leandro , estuve buscando un poko, y encontre esto:
Citar
GetFileSecurity Function

Descripion: The GetFileSecurity function obtains specified information about the security of a file or directory. The information obtained is constrained by the caller's access rights and privileges.

En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: como saber si un directorio puede se modificado.
« Respuesta #5 en: 5 Agosto 2010, 21:55 pm »

bueno la verdad no se bien todavía como, pero dejo esto que puede ser interesante para alguien mas,

es parecido al GetAttr pero con más detalles.

Código:
Option Explicit

Private Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long

Private Const MAX_PATH As Long = 260

Private Const SHGFI_ATTRIBUTES      As Long = &H800

Private Const DROPEFFECT_COPY As Long = 1
Private Const DROPEFFECT_LINK As Long = 4
Private Const DROPEFFECT_MOVE As Long = 2

'http://msdn.microsoft.com/en-us/library/bb762589%28VS.85%29.aspx
Private Const SFGAO_LINK As Long = &H10000
Private Const SFGAO_BROWSABLE As Long = &H8000000
Private Const SFGAO_CANCOPY As Long = DROPEFFECT_COPY
Private Const SFGAO_CANDELETE As Long = &H20&
Private Const SFGAO_CANLINK As Long = DROPEFFECT_LINK
Private Const SFGAO_CANMONIKER As Long = &H400000
Private Const SFGAO_CANMOVE As Long = DROPEFFECT_MOVE
Private Const SFGAO_CANRENAME As Long = &H10&
Private Const SFGAO_CAPABILITYMASK As Long = &H177&
Private Const SFGAO_COMPRESSED As Long = &H4000000
Private Const SFGAO_CONTENTSMASK As Long = &H80000000
Private Const SFGAO_DISPLAYATTRMASK As Long = &HF0000
Private Const SFGAO_DROPTARGET As Long = &H100&
Private Const SFGAO_FILESYSANCESTOR As Long = &H10000000
Private Const SFGAO_FILESYSTEM As Long = &H40000000
Private Const SFGAO_FOLDER As Long = &H20000000
Private Const SFGAO_GHOSTED As Long = &H80000
Private Const SFGAO_HASPROPSHEET As Long = &H40&
Private Const SFGAO_HASSTORAGE As Long = &H400000
Private Const SFGAO_HASSUBFOLDER As Long = &H80000000
Private Const SFGAO_HIDDEN As Long = &H80000
Private Const SFGAO_ISSLOW As Long = &H4000&
Private Const SFGAO_NEWCONTENT As Long = &H200000
Private Const SFGAO_NONENUMERATED As Long = &H100000
Private Const SFGAO_READONLY As Long = &H40000
Private Const SFGAO_REMOVABLE As Long = &H2000000
Private Const SFGAO_SHARE As Long = &H20000
Private Const SFGAO_STORAGEANCESTOR As Long = &H10000000
Private Const SFGAO_VALIDATE As Long = &H1000000

Private Type SHFILEINFO
    hIcon               As Long
    iIcon               As Long
    dwAttributes        As Long
    szDisplayName       As String * MAX_PATH
    szTypeName          As String * 80
End Type

Public Function GetAttributes(ByVal sPath As String) As Long
    Dim tSHFI As SHFILEINFO
    Call SHGetFileInfo(ByVal sPath, 0, tSHFI, Len(tSHFI), SHGFI_ATTRIBUTES)
    GetAttributes = tSHFI.dwAttributes
End Function

Private Sub Form_Load()
    Dim sPath As String
    Dim hAttr As Long
   
    sPath = "C:\Documents and Settings\All Users\Documentos"
   
    hAttr = GetAttributes(sPath)
   
    If (hAttr And SFGAO_READONLY) = SFGAO_READONLY Then MsgBox "Solo de lectura"
    If (hAttr And SFGAO_CANRENAME) = SFGAO_CANRENAME Then MsgBox "puede renombrarse"
    If (hAttr And SFGAO_HASSUBFOLDER) = SFGAO_HASSUBFOLDER Then MsgBox "tiene subcarpetas"
    If (hAttr And SFGAO_SHARE) = SFGAO_SHARE Then MsgBox "es una carpeta compartida"
End Sub

para mas info http://msdn.microsoft.com/en-us/library/bb762589%28VS.85%29.aspx
En línea

cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: como saber si un directorio puede se modificado.
« Respuesta #6 en: 6 Agosto 2010, 18:57 pm »

Leandro, me parece que esto es lo que buscas [http://msdn.microsoft.com/en-us/library/aa446639(VS.85).aspx]
En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: como saber si un directorio puede se modificado.
« Respuesta #7 en: 7 Agosto 2010, 04:36 am »

Hola estuve mirando GetFileSecurity, en esta pagina hay un ejemplo
http://vbcity.com/forums/p/16136/67627.aspx

pero creo que no es 100% certero o apunta a otra cosa, por ejemplo

si paso este path (Unidad de CD) "E:\Foto.jpg"  me dice READ permission is = False
Y "Write permission is " False
lo de escribir esta bien ya que no podria, pero si puedo leer el archivo

Si paso un path comun de la unidad c:\ esta todo bien, tengo permisos de Lectura y Escritura, etc.
pero supongamos que esta abierto en modo exclusivo.

Open "C:\Foto.jpg" For Binary Lock Write As #1

tambien me dice que tengo permiso de Lectura , Escritura y Eleminarlo, pero esto no es asi porque si quiziera abrirlo nuevamente o elminarlo me daria un error.

asi que bueno creo que me voy a tener que volcar a un viejo y querido "On Error GoTo"

Saludos.

En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: como saber si un directorio puede se modificado.
« Respuesta #8 en: 7 Agosto 2010, 05:40 am »

  La funcion se ejecuta perfectamente, de hecho lo que pasa es que esa api lo que hace realmente es verificar los permisos promiscuos del sistema NTFS(Ignoro otros sistemas de archivos), mas no verifica si actualmente se encuentra bloqueado, Bueno aqui una Captura,

Por cierto funciona al 100%, justamente era lo que andaba buscando (cuenta propia xP)!¡.

Ajusta la seguridad de tu(s) archivo(s) ( en mi caso como soy paranoico con mi seguridad de archivos tengo bloqueado la eliminacion de archivos xP)



Dulces Lunas!¡.
« Última modificación: 7 Agosto 2010, 05:49 am por BlackZeroX » En línea

The Dark Shadow is my passion.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: como saber si un directorio puede se modificado.
« Respuesta #9 en: 7 Agosto 2010, 13:24 pm »

La forma mas sencilla de comprobarlo es intentandolo... >:D
Es decir que con CreateFile podrias intentar abrir el fichero con los FLAGS que quieras comprobar...

He hecho esta pequeña funcion, me encantan las funciones :P :
Código
  1. 'KERNEL32
  2. Private Declare Function CloseHandle Lib "KERNEL32" (ByVal hObject As Long) As Long
  3. Private Declare Function CreateFile Lib "KERNEL32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
  4.  
  5. Private Const INVALID_HANDLE_VALUE As Long = (-1)
  6. Private Const OPEN_EXISTING As Long = 3
  7. Private Const FILE_FLAG_BACKUP_SEMANTICS As Long = &H2000000
  8. Private Const FILE_SHARE_READ As Long = &H1
  9. Private Const FILE_SHARE_WRITE As Long = &H2
  10.  
  11. Public Enum AccessType
  12.    GENERIC_READ = &H80000000
  13.    GENERIC_WRITE = &H40000000
  14.    GENERIC_READWRITE = &HC0000000
  15. End Enum
  16.  
  17. Public Function CheckAccess(ByVal sPath As String, ByVal dwDesiredAccess As AccessType) As Boolean
  18.    Dim lRet        As Long
  19.  
  20.    lRet = CreateFile(sPath, dwDesiredAccess, FILE_SHARE_READ + FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
  21.    CheckAccess = (lRet <> INVALID_HANDLE_VALUE)
  22.    Call CloseHandle(lRet)
  23. End Function
  24.  
  25. Private Sub Form_Load()
  26.    Debug.Print CheckAccess("C:\bit.bin", GENERIC_READWRITE), Err.LastDllError
  27.    Debug.Print CheckAccess("F:\", GENERIC_READWRITE), Err.LastDllError
  28.    Debug.Print CheckAccess("C:\", GENERIC_READWRITE), Err.LastDllError
  29.    Debug.Print CheckAccess("F:\", GENERIC_WRITE), Err.LastDllError
  30.    Debug.Print CheckAccess("F:\", GENERIC_READ), Err.LastDllError
  31. End Sub

Funciona a la perfeccion ;D ;D ;D
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

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