'Desc: daemon de eliminacion de archivo corriendo como Local System, asi sobrevive a loging y loguts; puede eliminar 'archivos "lockeados" por procesos de logins y ejecutandose(tipicamente explorer) y de otros usuarios. 'DEPENDE EN QUE PSEXEC ESTE INTALADO EN EL SISTEMA Y DE QUE EL PATH DE EJECUTABLES O 'LA VARIABLE pathPsexec SEA SETEADA AL DIR EN DONDE PSEXEC RESIDE '----------------- CAMBIAR ----------------------------- 'archivo a eliminar; DEBE SER UN PATH ABSOLUTO; lo siguiente borra el archivo de prueba en este mismo directorio 'Ejemplo: file="C:\Windows\System32\symldrvc.exe" file = Left(Wscript.ScriptFullName,InStrRev(Wscript.ScriptFullName,"\")) & "prueba-del-psexec.txt" '------------------CAMBIAR SI DESEA -------------------------------- 'SI SE CAMBIA debe ser un path absoluto pathLog =Left(Wscript.ScriptFullName,InStrRev(Wscript.ScriptFullName,"\")) & "log-del-psexec.txt" intentos= 120 ' la cantidad de intentos de eiminarcion que hara el script. ( 1 intento por segundo ); da tiempo a desloguearse 'luego de correr el script '-----------------CAMBIAR SI NECESRIO--------------------- 'solo necesario si psexec el path del sistema. Si se setea el path es NECESARIO poner el "\" final 'ejemplo: 'pathPsexec="C:\Archivos de programa\Sysinternals\PsTools\" pathPsexec="" ' ESTE SCRIPT SE EJECUTA COMO LOCAL SYSTEM Y SOBREVIVE A LOGINS Y LOGOUTS. DEPENDE EN ' QUE PSEXEC ESTE INSTALADO EN EL SISTEMA Y DENTRO DEL PATH DE EJECUTABLES o que este seteado 'correctamente pathPsexec ' debe verificar la cantidades de argumentos; si ejecutado con 0 se ejecuta a si mismo con psexec y un argumento "System" ' si recibe un argumento asume que ya esta corriendo como sistema psexec=chr(34) & pathPsexec & "psexec" & chr(34) If WScript.Arguments.Count = 0 Then Set Sgh=WScript.CreateObject("WScript.Shell") Sgh.run(psexec & " -i -s -d wscript.exe " & chr(34) _ & WScript.ScriptFullName & chr(34) & " System") WScript.Quit(0) End If 'en este punto se debe estar ejecutando como local system res=MsgBox("Esta seguro de intentar eliminar el achivo:"& VbCrLf & _ file & "?",vbOkCancel,"Eliminacion de archivo") if res <> vbOk then WScript.quit(0) end if res=MsgBox("Se intentara eliminar el archivo "& VbCrLf & _ file & VbCrLF & intentos & " veces (1 por segundo)." & VbCrLf & _ "Ver logs de progreso en:"&pathLog,vbOkCancel,"Informacion") set fso = CreateObject("Scripting.fileSystemObject") Set fileLog = fso.OpenTextFile(pathLog, 8 ,TRUE) fileLog.WriteLine(VbCrLf & _ Now & VbTab & "COMENZANDO EL ELIMINADOR DEL ARCHIVO:" & file ) on error resume next do while intentos>0 'if (fso.FileExists(file)) Then ' MsgBox("Intentando eliminar:" & file) 'else ' MsgBox("NO existe:" & file) ' WScript.quit(0) 'end if 'fileLog.(Now & "Intentando eliminar ....") fso.deleteFile file, true intentos=intentos -1 ' MsgBox("se llego") if err.number <> 0 then fileLog.WriteLine(Now & " NO se puedo eliminar,error:" & err.number _ & " desc: "& err.description ) else fileLog.WriteLine(Now & " SE PUDO ELIMINAR " & file & _ ". Finalizando el eliminador." ) WScript.Quit(0) end if WScript.sleep(1000) loop fileLog.WriteLine (Now & _ " Expiraron los intentos y NO SE PUDO ELIMINAR O EL ARCHIVO NO EXISTE. Finalizando.")