jueves, 23 de octubre de 2008

Cambiar prioridad a un proceso

Este script modificara la prioridad al proceso que especifiquemos, (queda en memoria por si se lanzan mas procesos).

En mi caso por ejemplo es para un antivirus que como es logico se lanza con la cuenta System, para tener permisos para cambiar la prioridad a este proceso lo mas comodo es crear una policita a nivel de maquina que cargue este script.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' If a particular process is running, will change its priority to whatever
' the constant PRIORITY_LEVEL is set at. If you want to change which service
' this script looks for, change the strProcess variable to the name of the
' process it is associated with.
'
' Priority Level Values:
' - Normal 32
' - Low 64
' - Realtime 128
' - High 256
' - Below Normal 16384
' - Above Normal 32768
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Set vars
Const PRIORITY_LEVEL = 64
Const PROCESS = "msmpeng.exe"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
'Search for process, if it's running, update priority
Do
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & PROCESS & "'")
For Each objProcess in colProcesses
objProcess.SetPriority(PRIORITY_LEVEL)
Next
Loop While 1



Otra opcion al ejecutar desde linea de comandos:

C:\WINDOWS\system32\cmd.exe /c start “loquesea” /belownormal “c:\loquesea”

Otra opcion es el programa ProcessTamer que al exceder un % de cpu baja la prioridad dinamicamente a los ejecutables para que no saturen el sistema.

No hay comentarios: