
Ich habe einen Windows-Dienst, der mit hoher Priorität ausgeführt werden muss.
Letztendlich möchte ich dieses Skript verwenden, um die Priorität nach dem Start des Dienstes zu ändern:
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
Aber derzeit kann ich die Priorität nicht ändern, auch nicht mit dem Taskmanager. Der Taskmanager gibt einen „Zugriff verweigert“-Fehler aus, aber ich bin als Administrator angemeldet und habe das Benutzerkonto des Dienstes auch auf Administrator geändert.
Beim Versuch, die Priorität zu ändern, erhalte ich immer noch die Meldung „Zugriff verweigert“. Irgendwelche Ideen, welche Berechtigung ich dafür benötige?
Antwort1
Ich habe in diesem Blog eine Möglichkeit gefunden, dies zu tun:http://akshayjain.org/blog/2008/08/hack-unable-to-change-priority-in-task-manager/
Wenn ich diesen Befehl ausführe
ntsd -c qd taskmgr.exe
der Taskmanager startet mit Systemprivilegien und ich kann die Prozesspriorität ändern. Das bedeutet, dass mein WSH-Skript dies auch kann. Ich habe eine Batchdatei erstellt
@ECHO OFF
ntsd -c qd cscript.exe set_service_priority.vbs
und jetzt wird die Prozesspriorität wie gewünscht geändert.
Anfangs konnte ich die Prozesspriorität nicht ändern, da der Dienst unter dem Systemkonto lief. Das Seltsame ist, dass administrator
ich sogar nach der Änderung des Dienstbenutzers (das bin ich ;) die Meldung „Zugriff verweigert“ erhielt. Aber mit diesem Trick funktioniert das wie am Schnürchen.
Antwort2
Möglicherweise müssen Sie oben in Ihrem Skript Folgendes hinzufügen:
Set objLoc = createobject("wbemscripting.swbemlocator")
objLoc.Security_.privileges.addasstring "sedebugprivilege", true
Obwohl ... ich würde nichts über 128 verwenden wollen ... (256 = Echtzeit)
Vollständige Liste hier:http://msdn.microsoft.com/en-us/library/aa393587.aspx
Antwort3
http://setiathome.berkeley.edu/forum_thread.php?id=69381
wmic-Prozess, wobei Name = "notepad.exe" CALL setpriority 32768
Leerlauf: 64 Unter Normal: 16384 Normal: 32 Über Normal: 32768 Hohe Priorität: 128 Echtzeit: 256