Cześć, mam własną usługę. Instaluję ją poprzez:
usluga.exe /install
Potem ją uruchamiam.
Chcę ją zatrzymać z wiersza polecenia. Znalazłem info o sc.exe
Więc robię:
sc stop usluga
ale dostaję komunikat:
[SC] OpenService Failed 1060
Mam też kod w Delphi, który powinien zatrzymać usługę. Wygląda tak:
h_manager:=OpenSCManager(PChar(aMachine),nil,
SC_MANAGER_CONNECT);
if h_manager > 0 then
begin
h_svc := OpenService(h_manager,PChar(aServiceName),
SERVICE_STOP or SERVICE_QUERY_STATUS);
if h_svc > 0 then
begin
if(ControlService(h_svc,SERVICE_CONTROL_STOP,
svc_status))then
begin
if(QueryServiceStatus(h_svc,svc_status))then
begin
while(SERVICE_STOPPED <> svc_status.dwCurrentState)do
begin
dwCheckPoint := svc_status.dwCheckPoint;
Sleep(svc_status.dwWaitHint);
if(not QueryServiceStatus(h_svc,svc_status))then
begin
// couldn't check status
break;
end;
if(svc_status.dwCheckPoint < dwCheckPoint)then
break;
end;
end;
end;
CloseServiceHandle(h_svc);
end;
CloseServiceHandle(h_manager);
end;
Result := SERVICE_STOPPED = svc_status.dwCurrentState;
Okazuje się, że zmienna h_svc ma wartość zero, a więc nie powiodła się funkcja OpenService.
Czytałem o tym w necie, ale nie znalazłem żadnej satysfakcjonującej mnie odpowiedzi. Ktoś miał podobny problem?