Windows 2000 и более ранних версий: все процессы предоставляются SC_MANAGER_CONNECT,

 Права доступа SC_MANAGER_ENUMERATE_SERVICE и SC_MANAGER_QUERY_LOCK_STATUS.

 

 Windows ХР: только зарегистрированные пользователи имеют SC_MANAGER_CONNECT,

 SC_MANAGER_ENUMERATE_SERVICE,

 и SC_MANAGER_QUERY_LOCK_STATUS права доступа.

Code:

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;

 

 

{

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

}

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить