Windows-Server-2003

更改 Windows 服務優先級

  • October 16, 2012

我有一個需要以高優先級執行的 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

但目前我無法更改優先級,即使使用任務管理器也是如此。taskmananger 拋出“拒絕訪問”錯誤,但我以管理員身份登錄,並且我也將服務的使用者帳戶更改為管理員。

嘗試更改優先級時,我仍然收到“拒絕訪問”消息。任何想法我需要什麼許可才能這樣做?

我在這個部落格中找到了一種方法:http: //akshayjain.org/blog/2008/08/hack-unable-to-change-priority-in-task-manager/

如果我執行這個命令

ntsd -c qd taskmgr.exe

任務管理器以系統權限開始,我可以更改程序優先級。這意味著我的 wsh 腳本也可以做到這一點。我創建了一個批處理文件

@ECHO OFF
ntsd -c qd cscript.exe set_service_priority.vbs

現在程序優先級得到了修改,就像我想要的那樣。

最初我無法更改程序優先級,因為該服務在系統帳戶下執行。奇怪的是,即使在將服務使用者更改為administrator(就是我)之後,我也收到了“拒絕訪問”消息。但是這個技巧就像一個魅力。

引用自:https://serverfault.com/questions/179161