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
|
procedure ServiceCheckConfig(HService: THandle);
var
Sz:DWORD;
Buff: array of byte;
P: PQueryServiceConfig;
begin
Sz:= 0;
QueryServiceConfig(HService, nil, 0, Sz) ;
Setlength(Buff, Sz);
P := @Buff[0];
if QueryServiceConfig(HService, P, Sz, Sz) then
if P.dwStartType = SERVICE_DISABLED then
begin
ChangeServiceConfig(
HService,
SERVICE_NO_CHANGE,
SERVICE_DEMAND_START,
SERVICE_NO_CHANGE,
0, 0, 0, 0, 0, 0, 0) ;
end;
end;
function ServiceStart(Name: string): Boolean;
var
H, Service: THandle;
Status: TServiceStatus;
begin
Result := False;
H := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
Service := OpenService(H , PChar(Name), SERVICE_ALL_ACCESS);
if Service > 0 then
begin
ServiceCheckConfig(Service); // passage de désactivé à manuel
StartService(Service, 0, PChar(nil^));
CloseServiceHandle(Service);
end;
CloseServiceHandle(H);
end; |
Partager