БОЛЬШОЙ FAQ ПО DELPHI



Приверить, запущен ли сервис

Падает комп с 16-го этажа и думает: "Вот бы сейчас зависнуть".


 uses
   WinSvc;
 function ServiceGetStatus(sMachine, sService: PChar): DWORD;
   {******************************************}
   {*** Parameters: ***}
   {*** sService: specifies the name of the service to open
   {*** sMachine: specifies the name of the target computer
   {*** ***}
   {*** Return Values: ***}
   {*** -1 = Error opening service ***}
   {*** 1 = SERVICE_STOPPED ***}
   {*** 2 = SERVICE_START_PENDING ***}
   {*** 3 = SERVICE_STOP_PENDING ***}
   {*** 4 = SERVICE_RUNNING ***}
   {*** 5 = SERVICE_CONTINUE_PENDING ***}
   {*** 6 = SERVICE_PAUSE_PENDING ***}
   {*** 7 = SERVICE_PAUSED ***}
   {******************************************}
 var
   SCManHandle, SvcHandle: SC_Handle;
   SS: TServiceStatus;
   dwStat: DWORD;
 begin
   dwStat := 0;
   // Open service manager handle. 
   SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
   if (SCManHandle > 0) then
   begin
     SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
     // if Service installed 
     if (SvcHandle > 0) then
     begin
       // SS structure holds the service status (TServiceStatus); 
       if (QueryServiceStatus(SvcHandle, SS)) then
         dwStat := ss.dwCurrentState;
       CloseServiceHandle(SvcHandle);
     end;
     CloseServiceHandle(SCManHandle);
   end;
   Result := dwStat;
 end;
 
 function ServiceRunning(sMachine, sService: PChar): Boolean;
 begin
   Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService);
 end;
 
 // Check if Eventlog Service is running 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   if ServiceRunning(nil, 'Eventlog') then
     ShowMessage('Eventlog Service Running')
   else
     ShowMessage('Eventlog Service not Running')
 end;
 
 {
   Windows 2000 and earlier: All processes are granted the SC_MANAGER_CONNECT,
   SC_MANAGER_ENUMERATE_SERVICE, and SC_MANAGER_QUERY_LOCK_STATUS access rights.
 
   Windows XP: Only authenticated users are granted the SC_MANAGER_CONNECT,
   SC_MANAGER_ENUMERATE_SERVICE,
   and SC_MANAGER_QUERY_LOCK_STATUS access rights.
 }
 
 {
   Do not use the service display name (as displayed in the services
   control panel applet.) You must use the real service name, as
   referenced in the registry under
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
 }
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ