Autor
|
Tema: como saber si un directorio puede se modificado. (Leído 6,137 veces)
|
LeandroA
|
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
Mensajes: 119
|
Sistema operativo? Con PHP se puede, si necesitas ayuda avisame. Ahora que veo CREO que respondí cualquier cosa.. Crei que estaba en la sección de PHP, de igual manera se puede con visual basic, pero no es mi fuerte Perdon
|
|
|
En línea
|
|
|
|
|
Angeldj27
Desconectado
Mensajes: 199
Ahorra Agua... Beba Cerveza
|
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 ™
|
Leandro , estuve buscando un poko, y encontre esto: GetFileSecurity FunctionDescripion: 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
|
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. 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
|
Leandro, me parece que esto es lo que buscas [http://msdn.microsoft.com/en-us/library/aa446639(VS.85).aspx]
|
|
|
En línea
|
|
|
|
LeandroA
|
Hola estuve mirando GetFileSecurity, en esta pagina hay un ejemplo http://vbcity.com/forums/p/16136/67627.aspxpero 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
Mensajes: 3.158
I'Love...!¡.
|
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
Mensajes: 2.416
Se siente observado ¬¬'
|
La forma mas sencilla de comprobarlo es intentandolo... 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 : 'KERNEL32 Private Declare Function CloseHandle Lib "KERNEL32" (ByVal hObject As Long) As Long 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 Private Const INVALID_HANDLE_VALUE As Long = (-1) Private Const OPEN_EXISTING As Long = 3 Private Const FILE_FLAG_BACKUP_SEMANTICS As Long = &H2000000 Private Const FILE_SHARE_READ As Long = &H1 Private Const FILE_SHARE_WRITE As Long = &H2 Public Enum AccessType GENERIC_READ = &H80000000 GENERIC_WRITE = &H40000000 GENERIC_READWRITE = &HC0000000 End Enum Public Function CheckAccess(ByVal sPath As String, ByVal dwDesiredAccess As AccessType) As Boolean Dim lRet As Long lRet = CreateFile(sPath, dwDesiredAccess, FILE_SHARE_READ + FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) CheckAccess = (lRet <> INVALID_HANDLE_VALUE) Call CloseHandle(lRet) End Function Private Sub Form_Load() Debug.Print CheckAccess("C:\bit.bin", GENERIC_READWRITE), Err.LastDllError Debug.Print CheckAccess("F:\", GENERIC_READWRITE), Err.LastDllError Debug.Print CheckAccess("C:\", GENERIC_READWRITE), Err.LastDllError Debug.Print CheckAccess("F:\", GENERIC_WRITE), Err.LastDllError Debug.Print CheckAccess("F:\", GENERIC_READ), Err.LastDllError End Sub
Funciona a la perfeccion
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como saber el directorio donde se aloja una web
« 1 2 »
Nivel Web
|
RedZer
|
11
|
10,879
|
1 Enero 2011, 19:47 pm
por RedZer
|
|
|
Un móvil GSM con software modificado puede impedir que las llamadas y los ...
Noticias
|
wolfbcn
|
0
|
1,535
|
2 Septiembre 2013, 13:43 pm
por wolfbcn
|
|
|
Como una imagen puede cambiar estando en el mismo directorio
Desarrollo Web
|
BALTA00
|
6
|
2,959
|
16 Abril 2015, 23:43 pm
por BALTA00
|
|
|
saber que programa de esteganografia ha modificado un archivo
Ingeniería Inversa
|
Follow the White Rabbit
|
3
|
3,569
|
10 Mayo 2018, 06:13 am
por Follow the White Rabbit
|
|
|
Esta web puede robar tu tarjeta de crédito con un icono modificado
Noticias
|
El_Andaluz
|
0
|
2,751
|
8 Mayo 2020, 00:05 am
por El_Andaluz
|
|