Windows-Server-2003
更改 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
但目前我無法更改優先級,即使使用任務管理器也是如此。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
(就是我)之後,我也收到了“拒絕訪問”消息。但是這個技巧就像一個魅力。