En environnement Windows 7 64b.
Je dispose d'un service, lancé en mode administrateur. Ce dernier doit stopper :
1/ des applications exécutées en mode administrateur,
2/ des services exécutés en mode administrateur.
Pour le 1/, cela fonctionne.
mais pour le 2/, je ne comprends pas ce qui se passe.
Voici le code utilisé pour stopper un service :
Je précise que ce code fonctionne lorsqu'il est utilisé dans un programme, mais pas à partir d'un autre service...
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 function StopperService(NomService: string): DWORD; var hsc: SC_HANDLE; hSchSvc: SC_HANDLE; SvcStatus: TServiceStatus; begin hsc := OpenSCManager(nil, nil, STANDARD_RIGHTS_READ); if (hsc = 0) then Result := GetLastError else begin hSchSvc := OpenService(hsc, PChar(NomService), SERVICE_ALL_ACCESS); CloseServiceHandle(hsc); if (hSchSvc = 0) then Result := GetLastError else begin // Stoppe le service if ControlService(hSchSvc, SERVICE_CONTROL_STOP, SvcStatus) then begin CloseServiceHandle(hSchSvc); Result := ERROR_SUCCESS; end else Result := GetLastError end; end; end;
Si quelqu'un pouvait éclaircir ma lanterne, je pense à une histoire de droits (fonctionne bien sous XP par exemple), mais je ne vois pas....
Par avance merci à vous tous.
Partager