更改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 

但是目前我无法改变优先级,即使使用任务pipe理器也是如此。 taskmananger抛出一个“拒绝访问”的错误,但我以pipe理员身份login,我也将服务的用户帐户更改为pipe理员。

尝试更改优先级时,仍会收到“拒绝访问”消息。 任何想法我需要做什么许可?

我在这个博客中find了一个这样做的方法: http : //akshayjain.org/blog/2008/08/hack-unable-to-change-priority-in-task-manager/

如果我运行这个命令

 ntsd -c qd taskmgr.exe 

taskmanager以系统权限开始,我可以改变进程的优先级。 这意味着我的wsh脚本也可以做到这一点。 我创build了一个batch file

 @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进程其中name =“notepad.exe”CALL setpriority 32768

空闲:64低于正常:16384正常:32高于正常:32768高优先级:128实时:256