
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