Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a windows service that needs to run with High Priority.
At the end of the day I want to use this script to modify the priority after service startup:

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

But currently I am not able to change the priority, even with the taskmanger. The taskmananger throws an "Access Denied" error, but I am logged on as administrator and I changed the user account of the service to administrator, too.

I still get the "access denied" message when trying to change the priority. Any ideas what permission I need to do that?

share|improve this question
up vote 4 down vote accepted

I found a way to do this in this blog:

If I run this command

ntsd -c qd taskmgr.exe

the taskmanager starts with system privileges and I am able to change the process priority. That means that my wsh script can do this, too. I created a batch file

ntsd -c qd cscript.exe set_service_priority.vbs

and now the process priority get's modified, like I wanted.

Initially I couldn't change process priority because the service ran under the system account. The strange thing is that, even after changing the service user to administrator (that's me ;) I got the "access denied" message. But with this trick that works like a charm.

share|improve this answer

wmic process where name="notepad.exe" CALL setpriority 32768

Idle: 64 Below Normal: 16384 Normal: 32 Above Normal: 32768 High Priority: 128 Real Time: 256

share|improve this answer
This will probably do the same like the script above, but in this case my problem was that I got a "Access denied" error for a specific service, even from taskmanager. Using ntsd solved this. – Jürgen Steinblock Oct 17 '12 at 6:22

You might need to add the following to the top of your script:

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

Although.. I wouldn't want to use anything above 128.. (256 = Realtime)

Full list here:

share|improve this answer
thanks for the update about the right value for high priority. I took my example from this link:… where it is mixed up. – Jürgen Steinblock Sep 8 '10 at 12:54
The hint with sedebugprivilege looked promissing but unfortunately it didn't help anything. Is there a permission for "change service priority" that the administrator does not have? – Jürgen Steinblock Sep 8 '10 at 12:59
Ahh, maybe it should be: SeIncreaseBasePriorityPrivilege Whole list here: – Grizly Sep 8 '10 at 13:14
Didn't work either :( The best thing for me is to focus on granting the right to the administrator (since I can't set the permission in task manager) first, any idea how to achive that? – Jürgen Steinblock Sep 9 '10 at 14:33

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.