AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dienst mit Fehler stoppen

Ein Thema von ralfiii · begonnen am 27. Nov 2013 · letzter Beitrag vom 27. Nov 2013
Antwort Antwort
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

Dienst mit Fehler stoppen

  Alt 27. Nov 2013, 08:43
Hallo!

Ich habe hier einen Dienst der Nutzerrechte (in der Anwendung) verwaltet.
Wenn die Verbindung zum Dongle abreisst soll sich der Dienst beenden.
Ich mache das im Service momentan mit
Controller(SERVICE_CONTROL_STOP);

Wenn man den Dienst in Windows nun so konfigurieren will, dass er sich bei einem Fehler neu startet, dann springt das nicht an weil der Dienst scheinbar ohne Fehler beendet wird.

Wie beende ich den Dienst so, dass Windows das als "beendet weil Fehler" sieht?

Danke!
R.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Dienst mit Fehler stoppen

  Alt 27. Nov 2013, 09:05
Wieso willst du den Dienst überhaupt beenden?

Liefer doch einfach keine Bestätigungen mehr aus ... oder "Hallo, du keine Rechte!"

Wenn sich ein Dienst durch einen Fehler beendet, dann ist der nicht robust genug programmiert. Darum sollte ein Dienst idR immer laufen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Dienst mit Fehler stoppen

  Alt 27. Nov 2013, 09:29
Wieso willst du den Dienst überhaupt beenden?
Erwischt
Ich hab noch mal drübergeschaut und der Lizenz-Dienst läuft eh weiter wenn der Dongle abgezogen wird.

Der Dienst mit dem ich kämpfe ist einer der nur bei Kunden installiert werden DARF die gewisse Rechte haben.
Da ist's aus Support-Sicht eigentlich ganz fein, wenn der Dienst sich gleich beendet oder gar nicht starten lässt wenn die Voraussetzungen nicht passen.

Und es muss doch in Delphi möglich sein, einen Dienst so zu beenden dass Windows mitkriegt dass da was schiefgelaufen ist.

Ich hab nun mal
Delphi-Quellcode:
     ErrorSeverity:=esCritical;
     ErrCode:=ERROR_SERVICE_SPECIFIC_ERROR;
     ReportStatus;
dem Controller(Stop) vorangestellt, im Ereignisprotokoll steht zwar
Der Dienst "foo" wurde mit folgendem dienstspezifischem Fehler beendet: Der Dienst hat einen
dienstspezifischen Fehlercode zurückgegeben..
Aber Windows startet den Dienst noch immer nicht automatisch neu, obwohl ich bei der Dienst-Wiederherstellung (Services-Panel) "bei erstem Fehler -> Dienst neu starten" angegeben hab. (und bei den zwei weiteren das selbe)

Hiiiilfe!

Geändert von ralfiii (27. Nov 2013 um 09:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Dienst mit Fehler stoppen

  Alt 27. Nov 2013, 10:36
Gelöst.

Super simpel:

Delphi-Quellcode:
     ErrCode:=ERROR_SERVICE_SPECIFIC_ERROR;
     Controller(SERVICE_CONTROL_STOP); // Stop service
Man muss dann nur noch im Windows Dienste Panel das Häkchen bei "Aktionen bei Unterbrechung mit Fehlern aktivieren" anhaken.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz