La définition d'une priorité de thread dans un service n'a aucun effet [fermé]
-
04-07-2019 - |
Question
Une configuration supplémentaire est-elle nécessaire avant de pouvoir définir les priorités de thread dans un service Windows?
Dans mon service, j'ai quelques fils qui appellent chacun la fonction CreateProcess ()
pour lancer une application externe. Je souhaite ajuster les priorités de thread (ou de processus) sur normal
ou inférieur
, en fonction de certains autres facteurs.
Le problème est que la fonction SetThreadPriority ()
échoue avec une erreur 6 (handle non valide?). Je passe un descripteur obtenu à partir de PROCESS_INFORMATION :: hThread
(après avoir appelé le CreateProcess ()
bien sûr), je pense donc que le descripteur devrait être valide.
J'ai également essayé de définir la priorité des processus à l'aide de la fonction SetPriorityClass ()
, qui échoue également.
Le service est connecté en tant qu'utilisateur local.
La solution
Peut-être que vous n’avez pas les bons droits d’accès? MSDN sur SetThreadPriority dit:
hThread [in] Un handle vers le thread dont la valeur de priorité doit être définie.
La poignée doit avoir le THREAD_SET_INFORMATION ou Accès THREAD_SET_LIMITED_INFORMATION droite. Pour plus d'informations, voir Sécurité des threads et droits d'accès.
Windows Server 2003 et Windows XP / 2000: La poignée doit avoir le THREAD_SET_INFORMATION droit d'accès.