'Desc: loguea los eventos de creacion de procesos ' Este script esta pensado para ser ubicado en el directorio "inicio"; tipicamente ' C:\Documents and Settings\\Menú Inicio\Programas\Inicio; es probable que de todas ' maneras haya mejores stios para el inicio mas temprano. ' La idea es que se ejecute en una etapa temprana del inicio de sesion. Si se desea, se puede ejecutar directamente. ' Corre como el usuraio que se logea. ' Para detenerlo ejecute el script pararEventUsuario.vbs ' SE DEBE SERTEAR LA VARIABLE pathLog '-----------------------------------CAMBIAR SI NECESARIO------------------------------------------ 'si se deja relativo y el script se pone en carpeta Inicio, el dir inicial del script es el dir del usuario ' tipicamente \Documents and Settings\\ pathLog = "log-de-proc-usuario.txt" '----------------------------------------------------------------------------------------- strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") '--------------------nuevo----------------------- Set objFileSystem = CreateObject("Scripting.fileSystemObject") Set objOutputFile = objFileSystem.openTextFile(pathLog,8, TRUE) '-------------------- procesos iniciales --------------------------------------- objOutputFile.WriteLine(vbCrLf & vbCrLf & _ "------------ Procesos Iniciales(como usuario normal) " & Now & " -------------" & vbCrLf & _ "Creacion(y/m/d h:m:s) PID PPID Nombre Linea de comando Path al ejecutable ") Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process") procIni = "" for each Process in colProcesses procIni = procIni & _ formatDateTime(Process.CreationDate)&" "& Process.ProcessId & _ vbTab & Process.ParentProcessId & vbTab & _ Process.Name & vbTab & Process.CommandLine & vbTab & _ Process.ExecutablePath & vbCrLf Next objOutputFile.WriteLine( procIni ) '------------------- comienzo de logeo de nuevos procesos ---------------------------------- objOutputFile.WriteLine(vbCrLf & vbCrLf & _ "------------ Comienzo de logeo(como usuario normal) " & Now & " -------------" & vbCrLf & _ "Creacion(y/m/d h:m:s) PID PPID Nombre Linea de comando Path al ejecutable ") Set colMonitoredProcesses = objWMIService. _ ExecNotificationQuery("select * from __instancecreationevent " _ & " within 1 where TargetInstance isa 'Win32_Process'") Do While true Set Process = colMonitoredProcesses.NextEvent objOutputFile.WriteLine( _ formatDateTime(Process.TargetInstance.CreationDate)&" " & _ Process.TargetInstance.ProcessId & _ vbTab & Process.TargetInstance.ParentProcessId & vbTab & _ Process.TargetInstance.Name & vbTab & _ Process.TargetInstance.CommandLine & vbTab & _ Process.TargetInstance.ExecutablePath ) if InStr(Process.TargetInstance.CommandLine,"pararEventUsuario.vbs")<>0 Then ' esto anda -> Process.TargetInstance.Terminate() objOutputFile.WriteLine("Encontrado pararEventUsuario.vbs!!! Finalizando logeo...") MsgBox("Saliendo del logeador de creacion de procesos (como usuario)" & vbCrLf & _ "logs en " & pathLog ) WScript.Quit(0) end if Loop function formatDateTime(s) 'yyyy/mm/dd hh:mm:ss o " no se aplica " if trim(s)="" or IsNull(s) then formatDateTime=" No se aplica " else s=trim(s) formatDateTime=Left(s,4)&"/"& Mid(s,5,2)&"/"&Mid(s,7,2)&" "& _ Mid(s,9,2)&":"&Mid(s,11,2)&":"&Mid(s,13,2) end if end function '----------------- BORRAR ---------------------- 'Do While true ' Set Process = colMonitoredProcesses.NextEvent ' objOutputFile.WriteLine( _ ' Now & vbTab & Process.TargetInstance.ProcessId & vbTab & Process.TargetInstance.ParentProcessId & vbTab & _ ' Process.TargetInstance.Name & vbTab & _ ' Process.TargetInstance.CommandLine & vbTab & _ ' Process.TargetInstance.ExecutablePath ) ' if InStr(Process.TargetInstance.CommandLine,"pararEventUsuario.vbs")<>0 Then ' ' esto anda -> Process.TargetInstance.Terminate() ' objOutputFile.WriteLine("Encontrado pararEventUsuario.vbs!!! Finalizando logeo...") ' MsgBox("Saliendo del logeador de creacion de procesos (como usuario)" & vbCrLf & _ ' "logs en " & pathLog ) ' WScript.Quit(0) ' end if 'Loop