更改 Windows 服務優先權

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

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

嘗試更改優先順序時,我仍然收到“訪問被拒絕”訊息。有什麼想法我需要什麼許可才能這樣做嗎?

答案1

我在這個部落格中找到了一種方法: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(那就是我;)之後,我仍然收到“訪問被拒絕”訊息。但這個技巧就像魅力一樣發揮作用。

答案2

您可能需要將以下內容新增至腳本頂部:

Set objLoc = createobject("wbemscripting.swbemlocator")
objLoc.Security_.privileges.addasstring "sedebugprivilege", true 

雖然..我不想使用高於128的任何東西..(256 =實時)

完整列表在這裡:http://msdn.microsoft.com/en-us/library/aa393587.aspx

答案3

http://setiathome.berkeley.edu/forum_thread.php?id=69381

wmic 進程,其中 name="notepad.exe" CALL setpriority 32768

空閒:64 低於正常值:16384 正常:32 高於正常值:32768 高優先:128 即時:256

相關內容