Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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
    objProcess.SetPriority(HIGH)
Next

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

3 Answers 3

up vote 3 down vote accepted

I found a way to do this in this blog: http://akshayjain.org/blog/2008/08/hack-unable-to-change-priority-in-task-manager/

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

@ECHO OFF
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

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

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
1  
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. –  SchlaWiener 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: http://msdn.microsoft.com/en-us/library/aa393587.aspx

share|improve this answer
    
thanks for the update about the right value for high priority. I took my example from this link: blogs.technet.com/b/heyscriptingguy/archive/2005/05/16/… where it is mixed up. –  SchlaWiener 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? –  SchlaWiener Sep 8 '10 at 12:59
    
Ahh, maybe it should be: SeIncreaseBasePriorityPrivilege Whole list here: msdn.microsoft.com/en-us/library/aa392758%28v=VS.85%29.aspx –  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? –  SchlaWiener Sep 9 '10 at 14:33

Your Answer

 
discard

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.