Назад | Перейти на главную страницу

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

Но в настоящее время я не могу изменить приоритет даже с бригадиром. Диспетчер задач выдает ошибку «Доступ запрещен», но я вошел в систему как администратор и также изменил учетную запись пользователя службы на администратора.

Я все еще получаю сообщение «Доступ запрещен» при попытке изменить приоритет. Есть идеи, какое разрешение мне нужно для этого?

Я нашел способ сделать это в этом блоге: 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 (это я;) Я получил сообщение "доступ запрещен". Но с этой уловкой это работает как шарм.

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

wmic процесс, где name = "notepad.exe" ВЫЗОВ setpriority 32768

В режиме ожидания: 64 Ниже нормы: 16384 Нормально: 32 Выше нормы: 32768 Высокий приоритет: 128 В реальном времени: 256

Возможно, вам потребуется добавить следующее в начало вашего скрипта:

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

Хотя .. я бы не хотел использовать что-либо выше 128 .. (256 = в реальном времени)

Полный список здесь: http://msdn.microsoft.com/en-us/library/aa393587.aspx