Изменить приоритет службы Windows
У меня есть служба Windows, которая должна работать с высоким приоритетом.
В конце дня я хочу использовать этот скрипт для изменения приоритета после запуска службы:
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
Но в настоящее время я не могу изменить приоритет даже с помощью менеджера задач. Диспетчер задач выдает ошибку "Отказано в доступе", но я вошел в систему как администратор и также изменил учетную запись пользователя службы на администратора.
Я все еще получаю сообщение "Отказано в доступе" при попытке изменить приоритет. Есть идеи, какое разрешение мне нужно для этого?
3 ответа
Я нашел способ сделать это в этом блоге: http://akshayjain.org/blog/2008/08/hack-unable-to-change-priority-in-task-manager/
Если я запускаю эту команду
ntsd -c qd taskmgr.exe
Менеджер задач запускается с системными привилегиями, и я могу изменить приоритет процесса. Это значит, что мой wsh-скрипт тоже может это сделать. Я создал командный файл
@ECHO OFF
ntsd -c qd cscript.exe set_service_priority.vbs
и теперь приоритет процесса изменяется, как я и хотел.
Изначально я не мог изменить приоритет процесса, потому что служба работала под системной учетной записью. Странно то, что даже после смены пользователя сервиса на administrator
(это я;) Я получил сообщение "Отказано в доступе". Но с этим трюком, который работает как шарм.
Возможно, вам понадобится добавить следующее в начало вашего скрипта:
Set objLoc = createobject("wbemscripting.swbemlocator")
objLoc.Security_.privileges.addasstring "sedebugprivilege", true
Хотя.. я бы не хотел использовать что-либо выше 128.. (256 = в реальном времени)
Полный список здесь: http://msdn.microsoft.com/en-us/library/aa393587.aspx
http://setiathome.berkeley.edu/forum_thread.php?id=69381
wmic process, где name="notepad.exe" CALL setpriority 32768
В режиме ожидания: 64 ниже нормального: 16384 в норме: 32 выше нормального: 32768 Высокий приоритет: 128 В реальном времени: 256