Autor
|
Tema: Como desbloquear archivos bloqueados por otra Aplicación (Leído 5,605 veces)
|
Yoghurt
Desconectado
Mensajes: 122
Si alguien se molesto en escribir, justo es leer.
|
Hola, después de buscar en este foro y en Google no di con la respuesta asi que pido vuestra ayuda gentiles personas.
Ya probé con UnlockFile(fp, 0,FileLen(spath), 0) y nada. MoveFileEx tampoco y no me sirve que se borre en el próximo reinicio.
Leí en un post que cobein habia hecho un código similar al de Unlocker.exe pero encontre.
De antemano Gracias ^^
|
|
|
En línea
|
|
|
|
MCKSys Argentina
|
Algo como esto? http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=69799&lngWId=1
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Yoghurt
Desconectado
Mensajes: 122
Si alguien se molesto en escribir, justo es leer.
|
Muy buen código, gracias. Pero solo desbloquea archivos abiertos desde la misma aplicación por lo que no pude eliminar otros archivos.
Mirando el source-code me doy cuenta del porqué, si pudiera revisar otros procesos para ver que archivos tienen abiertos seria una buena solución para éste codigo-fuente lo malo es que no sé como saber los archivos abiertos por otros procesos. Buscaré un poco más a ver si puedo hacer algo ^^
|
|
|
En línea
|
|
|
|
MCKSys Argentina
|
Por lo que se, creo que 1ero deberias revisar la lista de procesos en ejecucion y luego revisar los handles de c/u. Si son handles de lock de files, enumerarlos. Hay varias tools que hacen esto (por ej. Process Explorer o OpenedFilesView de NirSoft). Con un poco de Reversing, podes sacar lo que hace c/u. Para cerrar los handles, podes usar CreateRemoteThread ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms682437(v=vs.85).aspx) y hacer un CloseHandle desde el mismo proceso (ojo! esto es muy probable que crashee el proceso). Eso es lo que se me ocurre en este momento...
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Yoghurt
Desconectado
Mensajes: 122
Si alguien se molesto en escribir, justo es leer.
|
Ya tengo cómo listar las aplicaciones: agregar un ListBox al proyecto para listar las apps. Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Const MAX_PATH = 260 Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szexeFile As String * MAX_PATH End Type Public Sub appList() Const PROCESS_ALL_ACCESS = 0 Dim uProcess As PROCESSENTRY32 Dim rProcessFound As Long Dim hSnapshot As Long Dim szExename As String Dim exitCode As Long Dim myProcess As Long Dim AppKill As Boolean Dim appCount As Integer Dim i As Integer On Local Error GoTo Finish appCount = 0 Const TH32CS_SNAPPROCESS As Long = 2& uProcess.dwSize = Len(uProcess) hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) rProcessFound = ProcessFirst(hSnapshot, uProcess) Do While rProcessFound i = InStr(1, uProcess.szexeFile, Chr(0)) szExename = LCase$(Left$(uProcess.szexeFile, i - 1)) List1.AddItem szExename rProcessFound = ProcessNext(hSnapshot, uProcess) Loop Call CloseHandle(hSnapshot) Finish: End Sub Private Sub Form_Load() appList End Sub
Ahora algo tedioso... modificar el code que me diste para revisar los handles (creo que se puede).
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Cuando una aplicación abre un fichero de forma exclusiva sólo ésta puede acceder al mismo. Hasta que la aplicación no cierre el handle tú no podrás hacer nada.
Sin entrar en aspectos más técnicos de como funcionan los handles de Windows la forma más "simple" es inyectando código en el proceso del que quieras cerrar el handle y hacer la llamada a CloseHandle() desde dentro de éste.
Saludos
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Por aquí en el foro había un código que cerraba los archivos abiertos por otras aplicaciones.
Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Si no me equivoco el método de Cobein no funciona en Windows7. Creo recordar que lo que hacía era básicamente duplicar el Handle para poder cerrarlo el mismo, sin inyección de código.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Re: Como hacer para chequear varias contraseñas en otra aplicacion?
Programación C/C++
|
Danyel_Casvill
|
2
|
3,636
|
10 Abril 2011, 04:55 am
por Danyel_Casvill
|
|
|
Como hacer click en un boton de otra aplicacion?
Programación Visual Basic
|
$Edu$
|
5
|
5,434
|
22 Marzo 2015, 12:35 pm
por Piratex
|
|
|
Como ver videos bloqueados por paises
Dudas Generales
|
Atacayte
|
5
|
10,419
|
7 Agosto 2013, 05:08 am
por freddy9901
|
|
|
Cómo publicar archivos específicos de aplicación web de ASP.NET
.NET (C#, VB.NET, ASP)
|
masharich
|
0
|
1,610
|
19 Junio 2015, 10:53 am
por masharich
|
|
|
Cómo desbloquear tu iPhone para irte con otra telefónica
Noticias
|
wolfbcn
|
0
|
1,265
|
9 Abril 2017, 14:30 pm
por wolfbcn
|
|