Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Anteros en 31 Diciembre 2006, 17:17 pm



Título: Problemas para borrar un archivo
Publicado por: Anteros en 31 Diciembre 2006, 17:17 pm
Quiero borrar un archivo pero este no se deja existe alguna forma de forzar su borrado???

- lo del borrado lo hago con fso.deletefile -

El archivo debe estar siendo utilizado por un proceso o esta siendo "amarrado" de alguna otra forma

Como hago para solucionar mi problema?


Título: Re: Problemas para borrar un archivo
Publicado por: Shrick en 31 Diciembre 2006, 17:23 pm
para borrar:
Código:
kill ("nombrearchivo")


Título: Re: Problemas para borrar un archivo
Publicado por: Anteros en 31 Diciembre 2006, 17:29 pm
el archivo nose deja borrar!  >:(... el kill tampoco me ayuda ... como puede el kill hacer lo q el fso.deletefile no hace... ademas el fso.deletefile tiene como parametro un bool para borrado forzado... y ni asi puedo borrar el archivo

debe de haber otras formas ...



Título: Re: Problemas para borrar un archivo
Publicado por: Shrick en 31 Diciembre 2006, 17:36 pm
Lo siento lo tengo mal puesto :-[
Código:
'Ejemplo
Kill "C:\nota.txt"


Título: Re: Problemas para borrar un archivo
Publicado por: Anteros en 31 Diciembre 2006, 17:38 pm
el kill no me sirve para lo q yo quiero BORRAR UN ARCHIVO ya lo probe  >:(

gracias


Título: Re: Problemas para borrar un archivo
Publicado por: Shrick en 31 Diciembre 2006, 17:39 pm
Es asi >:( >:( >:(


Título: Re: Problemas para borrar un archivo
Publicado por: Anteros en 31 Diciembre 2006, 17:41 pm
alguien q pueda yudarme?


Título: Re: Problemas para borrar un archivo
Publicado por: sp26 en 31 Diciembre 2006, 17:55 pm
Quizas es por que se este ejecutando asi sea directa o indirectamente, necesitas terminar ese proceso para luego borrarlo. YO lo haria asi:

Código:
Public Sub KillProcess(ByVal processName As String)
       
        On Error GoTo ErrHandler
         
         Dim oWMI
         Dim ret
         Dim sService
         Dim oWMIServices
         Dim oWMIService
         Dim oServices
         Dim oService
         Dim servicename
         
          Set oWMI = GetObject("winmgmts:")
          Set oServices = oWMI.InstancesOf("win32_process")

          For Each oService In oServices
                 
                 servicename = LCase(Trim(CStr(oService.Name) & ""))
                 
                 If InStr(1, servicename, LCase(processName), vbTextCompare) > 0 Then
                    ret = oService.Terminate
                 End If
 
          Next
         
          Set oServices = Nothing
          Set oWMI = Nothing

 
ErrHandler:
  Err.Clear
End Sub


Private sub Form_load ()
On error goto NOU:
KillProcess ("Notepad") ->> 'Este es el bloc de notas que ejecuta 'los archivos .TXT (Es solo un ejemplo)

Kill ("C:\Texto-muy-importante-y-no-quiero-borrarlo.TXT")
Nou:
Msgbox "No se pudo borrar el archivo", vbInformation, "No se pudo borrar el archivo"
End sub


Título: Re: Problemas para borrar un archivo
Publicado por: Anteros en 31 Diciembre 2006, 18:02 pm
ese killprocess es el q empleo para matar el proceso q amarra al archivo q quiero borrar y funciona  ::) pero al querer borrar el archivo ...nada no lo borra :-\

por eso mi pregunta es si existe un metodo de fuerza bruta para  borrar un archivo q no se deja  ::)

existira??? o estoy escribien incongruencias??? :huh:

 ;D


Título: Re: Problemas para borrar un archivo
Publicado por: ‭lipman en 31 Diciembre 2006, 18:44 pm
Vamos a ver, si no se te borra un archivo es por que está en uso, no se me ocurre otra cosa.

Lo que debes hacer es quitar ese proceso, como dice sp26 y después usar lo que te dicen del kill.

El kill funciona perfectamente, no se como lo usas tú.

Código:
'Ejemplo
Private Sub Command1_Click()
Kill "C:\lol32.exe"
End Sub


Título: Re: Problemas para borrar un archivo
Publicado por: NYlOn en 31 Diciembre 2006, 20:39 pm
Lo mas probable es que este en uso...
Por casualidad, ¿estas intentando borrar un archivo del sistema?

Saludos.-


Título: Re: Problemas para borrar un archivo
Publicado por: skapunky en 31 Diciembre 2006, 21:02 pm
Si el archivo esta en uso, y por tanto hay un proceso abierto, por mucho que hagas kill no lo podras eliminar. La idea coherente que veo es la que propone sp26, se mata el proceso y luego se borra el archivo.
La forma de usar el kill es la sigiuiente:

kill (" Ruta+archivo ")

Ej:

kill ("c:\archivo.exe")

Saludos


Título: Re: Problemas para borrar un archivo
Publicado por: dimitrix en 31 Diciembre 2006, 21:10 pm
Sip, cuando hice mi programa para borrar el cp40.exe de las CiberControls, tenia que matar el proceso y luego borrar.
Suerte y Feliz navidad!!!


Título: Re: Problemas para borrar un archivo
Publicado por: Shrick en 31 Diciembre 2006, 21:19 pm
Si el archivo esta en uso, y por tanto hay un proceso abierto, por mucho que hagas kill no lo podras eliminar. La idea coherente que veo es la que propone sp26, se mata el proceso y luego se borra el archivo.
La forma de usar el kill es la sigiuiente:

kill (" Ruta+archivo ")

Ej:

kill ("c:\archivo.exe")

Saludos

Es Kill con mayuscula ;D


Título: Re: Problemas para borrar un archivo
Publicado por: Syphroot en 1 Enero 2007, 08:53 am
hay archivos con atributos del sistema u ocultos que no se pueden, o no se dejan borrar. Lo que hay que hacer es cambiarles el atributo, algo asi:

Código:
SetAttr "Ruta", vbNormal

'Y luego el kill

Kill "Ruta"

Con eso se deberia borrar, el proceso debe estar terminado para poder eliminarlo....

saludos


Título: Re: Problemas para borrar un archivo
Publicado por: Anteros en 2 Enero 2007, 03:19 am
lo de Syphroot  ya lo hice tambien lo mas logico como uds lo dicen es q algun proceso lo este amarrando ...

tons como hago para averiguar esos procesos?
 :rolleyes:


Título: Re: Problemas para borrar un archivo
Publicado por: piojento en 2 Enero 2007, 03:33 am
Hay forma de desbloquear archivos en uso, voy a ver si pillo el codigo i lo paso, es lo que buscas. (no siempre se "sueltan"al cerrar la aplicacion que lo usa, hay veces que queda tomado anda saber por que...o hay veces que es mecanismo de seguridad del sistema)

pd: y no sigan con lo del kill...


Título: Re: Problemas para borrar un archivo
Publicado por: Anteros en 2 Enero 2007, 15:00 pm
lo del amigo piojento lo dice todo  :D

si pudieras compartirnos el codigo ... bcan!


Título: Re: Problemas para borrar un archivo
Publicado por: piojento en 2 Enero 2007, 18:20 pm
no encontre el que andaba buscando, lo habia leido en unos documentos en microsoft...pero no pude dar con el =(
Aca te dejo otras alternativas.

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=54526&lngWId=1

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=50051&lngWId=1

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1650&lngWId=1

Saludos


Título: Re: Problemas para borrar un archivo
Publicado por: Sancho.Mazorka en 2 Enero 2007, 20:16 pm
Piojento tiene razon no funciona el:
Kill Ruta & Archivo
asi que no sigan rompiendo las bolas, como 12 personas deben haber puesto lo mismo, fijate esto lo sake de la Api-Guide esperemos que te sirva

Código:
'This program needs a Dialog box, named CDBox1
'  (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)
'   and select Microsoft Common Dialog control)
Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Private Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAborted As Boolean
    hNameMaps As Long
    sProgress As String
End Type
Private Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const FO_DELETE = &H3
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As Long) As Long
Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim lngHandle As Long, SHDirOp As SHFILEOPSTRUCT, lngLong As Long
    Dim Ft1 As FILETIME, Ft2 As FILETIME, SysTime As SYSTEMTIME
    'Set the dialog's title
    CDBox.DialogTitle = "Choose a file ..."
    'Raise an error when the user pressed cancel
    CDBox.CancelError = True
    'Show the 'Open File'-dialog
    CDBox.ShowOpen
    'Create a new directory
    CreateDirectory "C:\KPD-Team", ByVal &H0
    'Copy the selected file to our new directory
    CopyFile CDBox.filename, "C:\KPD-Team\" + CDBox.FileTitle, 0
    'Rename the file
    MoveFile "C:\KPD-Team\" + CDBox.FileTitle, "C:\KPD-Team\test.kpd"
    'Open the file
    lngHandle = CreateFile("C:\KPD-Team\test.kpd", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
    'Get the file's size
    MsgBox "The size of the selected file is" + Str$(GetFileSize(lngHandle, lngLong)) + " bytes."
    'Get the fil's time
    GetFileTime lngHandle, Ft1, Ft1, Ft2
    'Convert the file time to the local file time
    FileTimeToLocalFileTime Ft2, Ft1
    'Convert the file time to system file time
    FileTimeToSystemTime Ft1, SysTime
    MsgBox "The selected file was created on" + Str$(SysTime.wMonth) + "/" + LTrim(Str$(SysTime.wDay)) + "/" + LTrim(Str$(SysTime.wYear))
    'Close the file
    CloseHandle lngHandle
    'Delete the file
    DeleteFile "C:\KPD-Team\test.kpd"
    With SHDirOp
        .wFunc = FO_DELETE
        .pFrom = "C:\KPD-Team"
    End With
    'Delete the directory
    SHFileOperation SHDirOp
    End
End Sub

Si no kieres borrar el archivo x VB, bajate el Ashampoo AntiSpyware, tiene unas opciones para borrar ese tipo de archivos "inborrables", tiene 3 modos de borrado:

Estandar: 3 pasos de reescritura, puede recuperarse en un laboratorio de recuperacion.
DoD 5220.22-M: 7 pasos de reescritura, dificiles de restaurar.
Metodo Gutmann: 35 pasos de reescritura, imposible de restaurar.


Sancho.Mazorka    :P