Einzelnen Beitrag anzeigen

Ludger Seegers

Registriert seit: 11. Nov 2011
4 Beiträge
 
#19

AW: Prüfen ob Service läuft...aber funktioniert nicht in einer ISAPI-DLL

  Alt 24. Mai 2012, 00:32
Hallo Leute kann mir einer dabei helfen?

Ich möchte aus einer ISAPI-DLL / Webserver-Anwendung prüfen ob ein bestimmter Dienst gestartet ist.

In einem normalen Programm erhalte ich den Status korrekt.
Wenn diese Funktion in der Webserveranwendung einbaue liefert die Funktion
OpenService(SCManHandle, sService, SC_MANAGER_ALL_ACCESS) immer nur den wert 0 zurück.

Liegt das evtl. an irgendwelchen Rechten?

Danke für die Info voraus.

Ludger Seegers

function ServiceGetStatus(sMachine, sService: PChar): DWORD;
var
SCManHandle, SvcHandle: SC_Handle;
SS: TServiceStatus;
dwStat: DWORD;
begin
dwStat := 0;
SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
SaveInfo('SCmanHandle',asr(SCmanHandle));
if (SCManHandle > 0) then
begin
SvcHandle := OpenService(SCManHandle, sService, SC_MANAGER_ALL_ACCESS);
SaveInfo('SvcHandle',asr(SvcHandle));
if (SvcHandle > 0) then
begin
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;
  Mit Zitat antworten Zitat