L'impostazione di una priorità thread in un servizio non ha alcun effetto [chiuso]
-
04-07-2019 - |
Domanda
È necessaria qualche configurazione aggiuntiva prima di poter impostare le priorità dei thread in un servizio Windows?
Nel mio servizio, ho alcuni thread che chiamano ciascuno la funzione CreateProcess ()
per avviare un'applicazione esterna. Vorrei adattare le priorità di thread (o processo) a normale
o inferiore
, a seconda di alcuni altri fattori.
Il problema è che la funzione SetThreadPriority ()
fallisce con un errore 6 (handle non valido?). Sto passando un handle ottenuto da PROCESS_INFORMATION :: hThread
(dopo aver chiamato il CreateProcess ()
ovviamente), quindi penso che l'handle dovrebbe essere valido.
Ho anche provato a impostare la priorità sui processi usando la funzione SetPriorityClass ()
, che fallisce anche.
Il servizio è connesso come utente locale.
Soluzione
Forse non hai i diritti di accesso corretti? MSDN su SetThreadPriority dice:
hThread [in] Un handle per il thread il cui valore prioritario deve essere impostato.
L'handle deve avere il THREAD_SET_INFORMATION o Accesso THREAD_SET_LIMITED_INFORMATION destra. Per ulteriori informazioni, vedere Thread di sicurezza e diritti di accesso.
Windows Server 2003 e Windows XP / 2000: l'handle deve avere il THREAD_SET_INFORMATION diritto di accesso.