Cambiar la prioridad del servicio de Windows

Cambiar la prioridad del servicio de Windows

Tengo un servicio de Windows que debe ejecutarse con alta prioridad.
Al final del día quiero usar este script para modificar la prioridad después del inicio del servicio:

Const HIGH = 256

strComputer = "."
strProcess = "BntCapi2.exe"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = '" & strProcess & "'")

For Each objProcess in colProcesses
    objProcess.SetPriority(HIGH)
Next

Pero actualmente no puedo cambiar la prioridad, ni siquiera con el administrador de tareas. El administrador de tareas arroja un error de "Acceso denegado", pero inicié sesión como administrador y también cambié la cuenta de usuario del servicio a administrador.

Sigo recibiendo el mensaje "acceso denegado" cuando intento cambiar la prioridad. ¿Alguna idea de qué permiso necesito para hacer eso?

Respuesta1

Encontré una manera de hacer esto en este blog:http://akshayjain.org/blog/2008/08/hack-unable-to-change-priority-in-task-manager/

Si ejecuto este comando

ntsd -c qd taskmgr.exe

el administrador de tareas comienza con privilegios del sistema y puedo cambiar la prioridad del proceso. Eso significa que mi script wsh también puede hacer esto. Creé un archivo por lotes

@ECHO OFF
ntsd -c qd cscript.exe set_service_priority.vbs

y ahora la prioridad del proceso se modifica, como quería.

Inicialmente no podía cambiar la prioridad del proceso porque el servicio se ejecutaba bajo la cuenta del sistema. Lo extraño es que, incluso después de cambiar el usuario del servicio a administrator(ese soy yo;) recibí el mensaje de "acceso denegado". Pero con este truco funciona a las mil maravillas.

Respuesta2

Es posible que necesites agregar lo siguiente en la parte superior de tu script:

Set objLoc = createobject("wbemscripting.swbemlocator")
objLoc.Security_.privileges.addasstring "sedebugprivilege", true 

Aunque... no me gustaría usar nada por encima de 128... (256 = Tiempo real)

Lista completa aquí:http://msdn.microsoft.com/en-us/library/aa393587.aspx

Respuesta3

http://setiathome.berkeley.edu/forum_thread.php?id=69381

proceso wmic donde nombre = "notepad.exe" LLAMADA setpriority 32768

Inactivo: 64 Por debajo de lo normal: 16384 Normal: 32 Por encima de lo normal: 32768 Prioridad alta: 128 Tiempo real: 256

información relacionada