Como definir a prioridade do processo usando pywin32 e WMI?

from win32com.client import GetObject

for proc in GetObject("WinMgmts:{impersonationLevel=impersonate,(IncreaseBasePriority,Debug)}").InstancesOf("Win32_Process"):
  if proc.CommandLine == "<my-command-line>":
    proc.SetPriority(4) # fails

Eu tentei passar umclasse prioritária (0x40) e também uma prioridade real (4), mas ambos falham com a seguinte mensagem:

  File "test.py", line 5, in <module>
    proc.SetPriority(0x40)
  File "C:\Progs\Python26\lib\site-packages\win32com\client\dynamic.py", line 505, in __getattr__
    ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'SWbemObjectEx', u'Invalid parameter ', None, 0, -2147217400), None)

Percebo que não está gostando de algum parâmetro, mas por que não?

Não estou interessado em uma solução que não seja WMI usandoSetPriorityClass. Eu me dei aSeDebugPrivilege do seguinte modo:

import win32security, ntsecuritycon, win32con, win32api
privs = ((win32security.LookupPrivilegeValue('',ntsecuritycon.SE_DEBUG_NAME), win32con.SE_PRIVILEGE_ENABLED),)
hToken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), win32security.TOKEN_ALL_ACCESS)
win32security.AdjustTokenPrivileges(hToken, False, privs)
win32api.CloseHandle(hToken)

questionAnswers(1)

yourAnswerToTheQuestion