AGB  ·  Datenschutz  ·  Impressum  







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

Service startet nicht

Ein Thema von himitsu · begonnen am 16. Jun 2011 · letzter Beitrag vom 20. Jun 2012
Antwort Antwort
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Service startet nicht

  Alt 16. Jun 2011, 10:30
Hallo,

ist irgendetwas in den Windows Eventlogs zu finden?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.226 Beiträge
 
Delphi 12 Athens
 
#2

AW: Service startet nicht

  Alt 16. Jun 2011, 10:45
Wie gesagt, dort steht absolut nix.

Außer sowas wie,
Zitat:
Der Dienst "ProdatSRVXE" wurde unerwartet beendet.
Zitat:
Der Versuch des Dienststeuerungs-Managers, nach dem unerwarteten Beenden des Dienstes "ProdatSRVXE" Korrekturmaßnahmen (Neustart des Diensts) durchzuführen, ist fehlgeschlagen
Welches dadurch entsteht, daß wir den Prozess dann nur noch per Task-Manager abschießen können und dann versucht wird diesen neu zu starten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Service startet nicht

  Alt 16. Jun 2011, 10:47
Da bleibt euch wohl nur übrig. Weitere Logfunktionalität in den Dienst zu implementieren
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.226 Beiträge
 
Delphi 12 Athens
 
#4

AW: Service startet nicht

  Alt 16. Jun 2011, 10:51
Wir haben Eurekalog drin (auch versuchsweise mal nicht)
und ich hab nun schon zu nahezu jedem Befehl einen Logeintrag (pumpe es seit Tagen nur noch voll damit).
Mehr Logs gehn nicht, da das Programm sonst nirgenwo mehr vorbei kommt.

Zitat:
Das Laufwerksargument zählt (vermutlich) nicht - ein Service läuft i.d.R. sowieso nochmal unter einem ganz anderen Account (LocalSystem) und hat daher die ge-subst-eten Laufwerke auch nicht!
Das bezog sich auf mein Delphi und die Quellcodes, ohne welche ein Debuggen etwas schwer wird.

Zitat:
Delphi IDE -> Menü Run -> Parameters -> Host application: "net", Parameters: "start MeinServiceName" (jeweils ohne die Anführungszeichen).
Ich versuch's mal.

Zitat:
Einmal pro Rechnerneustart halt, lässt sich sicher auch automatisieren, war ich bisher nur zu faul zu
Ist ein Terminal-Server und jeder Benutzer hat siene eigenen Pfade/Laufwerke.

Wenn ich was über's UAC mit Adminrechten gestartet hab (bin ja nur "Benutzer"), dann sehen die Programme die einstellungen des Admin-akkount, also dessen Benutzernamen und dieser Name wird dann zum verbinden der Laufwerke verwendet.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Jun 2011 um 11:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.226 Beiträge
 
Delphi 12 Athens
 
#5

AW: Service startet nicht

  Alt 16. Jun 2011, 11:26
Zitat:
Delphi IDE -> Menü Run -> Parameters -> Host application: "net", Parameters: "start MeinServiceName" (jeweils ohne die Anführungszeichen).
Über NET START im Debugger gestartet funktioniert nicht.

Application.Run; beendet sich dann immer sofort und startet erst garnicht.
Das passierte auch schon, als ich damals versuchte den Prozess (die Service.exe) direkt im Delphi zu debuggen.

Irgendwie erkennt TService anscheinend, daß es nicht als "Dienst" im SYSTEM-Konto läuft und startet dann garnicht erst.

Aus diesem Grund hatte ich damals sowas gemacht, um es Debuggen zu können.
Delphi-Quellcode:
procedure TProdatSRVXEService.ServiceCreate(Sender: TObject);
var
  Started: Boolean;
  Temp: TForm;
begin
  LogEvent('DataServer-Create');
  LoadConfiguration;

  if Trim(SvcMgr.Application.Title) = 'then
    SvcMgr.Application.Title := ExtractFileName(Forms.Application.ExeName);
  if IsDebuggerPresent or FindCmdLineSwitch('DEBUG') then begin
    Forms.Application.MainFormOnTaskBar := False; // geht leider doch nicht ohne Form
    Forms.Application.CreateForm(TForm, Temp); // Form zum Beenden und für Eintrag in Taskbar
    Temp.Caption := 'Debug-Mode: ' + SvcMgr.Application.Title;
    Temp.OnCloseQuery := DebugServiceClose;
    Temp.Visible := True;
    { SvcMgr.Application.Run; }
    {}if FindCmdLineSwitch('INSTALL', ['-', '/'], True) then
    {}  TServiceApplicationHack(Application).RegisterServices(True, FindCmdLineSwitch('SILENT', ['-', '/'], True))
    {}else if FindCmdLineSwitch('UNINSTALL', ['-', '/'], True) then
    {}  TServiceApplicationHack(Application).RegisterServices(False, FindCmdLineSwitch('SILENT', ['-', '/'], True))
    {}else begin
    {}  Started := True;
    {}  ServiceStart(Self, Started);
    {}  if Started then
    {}    while not (Terminated or StopService) do begin
    {}      Forms.Application.ProcessMessages;
    {}      Sleep(20);
    {}    end;
    {}  Forms.Application.Terminate;
    {}end;
  end;
end;

procedure TProdatSRVXEService.DebugServiceClose(Sender: TObject; var CanClose: Boolean);
begin
  StopService := True;
end;
Diese "Hack" läuft, wobei Application.Ran umgangen wird, welches ja erzeit nicht geht und beim Debuggen auch nie funktionierte.
Allerdings läuft er so als Anwendung und nicht als Dienst.

PS: Diesen Codeteil hatte ich gerade natürlich auskommentiert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Jun 2011 um 11:29 Uhr)
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
677 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Service startet nicht

  Alt 16. Jun 2011, 11:35
Über NET START im Debugger gestartet funktioniert nicht.
Hmmm... liegt das Kompilat denn auf einem lokalen Laufwerk? Also nicht im Netz oder einem gesubsteten Laufwerk?

Bei mir funktioniert es nämlich (mit Delphi XE) sehr zuverlässig, habe damit gerade in den letzten 8 Wochen etliches debugged. Erinnere mich grob daran, daß der Service natürlich schon installiert sein muss, und der ImagePath stimmen muss (ich habe für Debug und Release getrennte Pfade, d.h. ein installiertes Release würde Debug "unmöglich" machen - dann springt er halt auch mit F7 gar nicht erst in den Code). Das sind meine zwei Hauptfehler beim Testen gewesen.

Irgendwie erkennt TService anscheinend, daß es nicht als "Dienst" im SYSTEM-Konto läuft und startet dann garnicht erst.
Aber damit TService etwas tun kann, muss der Code ja schon ausgeführt werden. Dann hilft es eventuell, halt direkt mit F7 statt Breakpoints ins Debuggen zu starten und ganz von Anfang durchzusteppen.

Allerdings kann ich wie gesagt meine Services, die mit ObjectName=LocalSystem sowohl in Delphi konfiguriert als auch im System eingetragen sind, zu debuggen.

Wie das mit Delphi 2010 ist, weiß ich leider nicht, nur daß es unter Delphi 2006 (hatte ich davor) nicht so einfach klappte.

Jetzt mit IDA Pro (oder einem anderen Debugger Deiner Wahl) auch noch das "net" zu debuggen, um zu sehen, ob und wie er in Dein Kompilat springt, wäre vermutlich etwas übertrieben, würde mir sonst nur als letzte Lösung einfallen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.226 Beiträge
 
Delphi 12 Athens
 
#7

AW: Service startet nicht

  Alt 16. Jun 2011, 11:47
EXE direkt im Debugger gestartet liegt auf einem SUBST-Laufwerk.
Der installierte Service aber auf einer normalen Partition.

Also starten tut es erstmal, aber .Run beendet sich eben immer gleich wieder.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
677 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Service startet nicht

  Alt 16. Jun 2011, 10:48
Service debuggen braucht kein Sleep

Delphi IDE -> Menü Run -> Parameters -> Host application: "net", Parameters: "start MeinServiceName" (jeweils ohne die Anführungszeichen).

Das Laufwerksargument zählt (vermutlich) nicht - ein Service läuft i.d.R. sowieso nochmal unter einem ganz anderen Account (LocalSystem) und hat daher die ge-subst-eten Laufwerke auch nicht!

Eine Ausnahme wäre ein Service, der speziell unter deinem Account läuft. Aber wou dann noch ein Service?

Wenn's nur um's Delphi selber geht - ich starte mir immer den TotalCommander ebenfalls elevated, klicke einmal alle Netzwerklaufwerke oben durch, um die gleichen Verbindung, die ich ohne Elevation habe, herzustellen (bis dahin sind sie zwar bekannt, aber nicht geöffnet, und ein direkter Zugriff auf Dateien dort schlüge fehl), fertig. Einmal pro Rechnerneustart halt, lässt sich sicher auch automatisieren, war ich bisher nur zu faul zu
  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 20:36 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