Bonjour,

Je souhaites pouvoir modifier la priorité d'exécution d'un service de manière permanente, ou à défaut au démarrage de la machine, sans toutefois devoir installer l'un des logiciels que l'on trouve sur la toile et qui le permettent.

Mes recherches concernant la possibilité d'intervenir sur le registre sont demeurées infructueuses mais j'ai trouvé un script qui semblait correspondre à mon besoin. En voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
' If a particular process is running, will change its priority to whatever 
' the constant PRIORITY_LEVEL is set at. If you want to change which service 
' this script looks for, change the strProcess variable to the name of the 
' process it is associated with. 
' 
' Priority Level Values: 
' 	- Normal	32 
'	- Low		64 
'	- Realtime	128 
'	- High		256 
'	- Below Normal  16384 
'	- Above Normal	32768 
' 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
 
'Set vars 
Const PRIORITY_LEVEL = 256 
Const PROCESS = "spoolsv.exe" 
strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
    	            & "{impersonationLevel=impersonate}!\\" _ 
					& strComputer & "\root\cimv2") 
 
'Search for process, if it's running, update priority 
Do 
	Set colProcesses = objWMIService.ExecQuery _ 
    	("Select * from Win32_Process Where Name = '" & PROCESS & "'") 
	For Each objProcess in colProcesses 
    		objProcess.SetPriority(PRIORITY_LEVEL)  
	Next 
Loop While 1
Bien sûr ça ne fonctionne pas et je me pose plusieurs questions.

Ce Do.... Loop While 1 me maisse perplexe. Sa présence conduit à une boucle ininterrompue. S'agit-il d'une erreur ou bien d'une astuce qui m'échappe ?

Je l'ai supprimé, je n'ai donc plus la boucle, mais je ne constate aucun changement de priorité. J'ai testé entre autres avec le service uphclean en tentant de le mettre BelowNormal et en mettant un msgbox avant et après le setpriority pour voir ce qui ce passait.

Ce qui soulève une autre question. Dans mon msgbox j'affiche la valeur de priority et j'obtiens systématiquement 8 avant et après ce qui n'a rien à voir avec la valeur 16384 que je tente d'imposer.

Après pas mal de lectures j'ai cru comprendre que cette valeur 8 correspondrait à une notion de priorité de base, résultat de la combinaison de la priorité attribuée au processus et de celle attribuée au threads qui en dépendent.

Dans ce cas il faudrait changer conjointement la priorité de toutes ces entités. Si oui accéder à la liste des threads d'un processus ne me semble pas très simple.

Est-ce que je me trompe ? Est-ce que toute tentative de ce genre est vouée à l'échec ?

Merci d'avance pour vous suggestions.

Heffgé