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 33 34 35 36 37 38 39 40 41 42 43 44 45
|
// sIdentifiant : l'identifiant du service (ex: Service_De_Sauvegarde)
function DonnerCompteService(sIdentifiant : String) : String;
var
MyHandleService, MyHandleSCM : SC_Handle;
MyConfigService : PQueryServiceConfig;
iOctetsNecessaires, iErreur : DWORD;
begin
if (sIdentifiant <> '') then
begin
// Initialisation
Result := '';
// Mappage du service
MyHandleSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
MyHandleService := OpenService(MyHandleSCM, PChar(sIdentifiant),
SERVICE_ALL_ACCESS);
// Récupération de la taille du buffer
QueryServiceConfig(MyHandleService, nil, 0, iOctetsNecessaires);
// Gestion des erreurs
iErreur := GetLastError;
if iErreur <> ERROR_INSUFFICIENT_BUFFER then
begin
Result := Result + SysErrorMessage(iErreur);
Exit;
end;
// Allocation du biffer
GetMem(MyConfigService, iOctetsNecessaires);
// Récupération des configurations du service
if WinSvc.QueryServiceConfig(MyHandleService, MyConfigService,
iOctetsNecessaires, iOctetsNecessaires) then
Result := MyConfigService^.lpServiceStartName;
// Nettoyage
CloseServiceHandle(MyHandleSCM);
CloseServiceHandle(MyHandleService);
end
else
Result := 'Paramètres incorrects.';
end; |
Partager