更改 Windows 服务优先级

Jür*_*ock 2 windows-server-2003 windows-service process-priority wmi

我有一个需要以高优先级运行的 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
Run Code Online (Sandbox Code Playgroud)

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

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

Jür*_*ock 5

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

如果我运行这个命令

ntsd -c qd taskmgr.exe
Run Code Online (Sandbox Code Playgroud)

任务管理器以系统权限启动,我可以更改进程优先级。这意味着我的 wsh 脚本也可以做到这一点。我创建了一个批处理文件

@ECHO OFF
ntsd -c qd cscript.exe set_service_priority.vbs
Run Code Online (Sandbox Code Playgroud)

现在进程优先级得到了修改,就像我想要的那样。

最初我无法更改进程优先级,因为该服务在系统帐户下运行。奇怪的是,即使在将服务用户更改为administrator(即我 ;)之后,我还是收到了“访问被拒绝”消息。但是这个技巧就像一个魅力。