Hola a todos, estoy tratando de lograr borrar un archivo en uso, alguno tiene idea de como poder lograrlo?
Gracias.
Cierra el proceso que tiene abierto el fichero y luego lo borras
Lol, en realidad quiero lograr algo parecido a lo que hace el programa Unlocker, que desbloquea el archivo sin tener que cerrar la aplicación que lo está usando y lo mejor es que desde la otra aplicación el archivo se sigue visualizando.
Ej: un excel o un doc
Cita de: Mad Antrax en 9 Abril 2014, 20:04 PM
Cierra el proceso que tiene abierto el fichero y luego lo borras
No es necesario, lo unico que se debe hacer es obtener el handle del archivo abierto y cerrarlo...
Codigo: http://filex.sytes.net/?dir=/BlackZeroX/Programacion/vb6/Foro.ElHacker.Net&file=UnlockFiles.rar
Dulces Lunas!¡.
Cita de: BlackZeroX (Astaroth) en 10 Abril 2014, 05:26 AM
No es necesario, lo unico que se debe hacer es obtener el handle del archivo abierto y cerrarlo...
Codigo: http://filex.sytes.net/?dir=/BlackZeroX/Programacion/vb6/Foro.ElHacker.Net&file=UnlockFiles.rar
Dulces Lunas!¡.
Me muestra como que el sitio se encuentra en construcción, es posible?
Cita de: BlackZeroX (Astaroth) en 10 Abril 2014, 05:26 AM
No es necesario, lo unico que se debe hacer es obtener el handle del archivo abierto y cerrarlo...
Codigo: http://filex.sytes.net/?dir=/BlackZeroX/Programacion/vb6/Foro.ElHacker.Net&file=UnlockFiles.rar
Dulces Lunas!¡.
Probé el código y explota en:
Public Function GetFileFullPath(ByVal hFile As Long) As String
...
HeapFree hHeap, 0, pName
...
End Function
Lo siento hace 24hrs que cambie todo lo de mi sitio, este es el enlace de descarga:
http://infrangelux.sytes.net/filex/?dwfe=ZmRlZGUyZjExYWIwZGU2YWJmMDRjNjc2YjdkMjg3YTc2ZDYzYTlkMg
Dulces Lunas!¡.
@BlackZeroX:
Esta funcion luce mal:
Public Function GetFileFullPath(ByVal hFile As Long) As String
Dim hHeap As Long, dwSize As Long, objName As UNICODE_STRING, pName As Long
Dim ntStatus As Long, i As Long, strDrives As String, strArray() As String
Dim dwDriversSize As Long, strDrive As String, strTmp As String, strTemp As String
On Error GoTo ErrHandle
hHeap = GetProcessHeap
pName = HeapAlloc(hHeap, HEAP_ZERO_MEMORY, &H1000)
ntStatus = NtQueryObject(hFile, ObjectNameInformation, pName, &H1000, dwSize)
If (NT_SUCCESS(ntStatus)) Then
i = 1
Do While (ntStatus = STATUS_INFO_LEN_MISMATCH)
pName = HeapReAlloc(hHeap, HEAP_ZERO_MEMORY, pName, &H1000 * i)
ntStatus = NtQueryObject(hFile, ObjectNameInformation, pName, &H1000, ByVal 0)
i = i + 1
Loop
End If
HeapFree hHeap, 0, pName
strTemp = String(512, Chr(0))
lstrcpyW strTemp, pName + Len(objName)
Se reseva memoria para obtener la informacion de el objeto para luego liberar la memoria? además podes llamar a NtQueryObject así:
NtQueryObject(hFile, ObjectNameInformation, 0, 0, &dwSize) ( C++, Pasando el puntero a dwSize )
Para obtener la cantidad de bytes necesarios y luego sí reservar esa cantidad de bytes (dwSize) y luego volver a llamar a NtQueryObject
y así evitar usar esos bucles tan inseguros.
Vendria bien repulir esas funciones, bueno simplemente diciendo, supongo que hace años que han sido escritas.
@x64Core
Por haya del 2007 y no, no es mio el src.
Dulces Lunas!¡.