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?
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
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
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.You might need to add the following to the top of your script:
Although.. I wouldn't want to use anything above 128.. (256 = Realtime)
Full list here: http://msdn.microsoft.com/en-us/library/aa393587.aspx
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