Изменить приоритет службы 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

Другие вопросы по тегам