Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr (https://www.delphipraxis.net/186421-delphi-7-dienst-startet-seit-ca-maerz-2015-nicht-mehr.html)

TPeterT 2. Sep 2015 06:46

Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Hallo!

Habe folgendes Problem: Ein, vor einigen Jahren entwickeltes - in Delphi 7 - Service startet seit ungefähr März, April 2015 nicht mehr. Installiert ist das Service auf einem Server 2003, auf welchem es auch jahrelang problemlos lief. Scheinbar nach einem Windowsupdates scheint das Service zwar noch als "gestartet" auf, läuft aber nicht mehr.
Nun habe ich versucht in Delphi 7 eine neue Service-Apllication zu erstellen ohne weiteren Code: selbes Ergebnis > sofort nach dem Starten (aus Delphi heraus) wird wieder beendet (in Wondows 7).
Weiss jemand von euch, woran das wirklich liegt (das mit den Updates ist leider nur eine Vermutung von mir) und wie ich das Problem in den Griff bekomme?

Liebe Grüße!

Union 2. Sep 2015 07:32

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Sind Leerstellen im Pfad der Service-Anwendung?

TPeterT 2. Sep 2015 07:58

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
nein - keine Leerzeichen im Pfad!
Beispiel:
D:\Daten\Service.exe

AlexII 2. Sep 2015 08:04

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Zitat:

Zitat von Union (Beitrag 1314363)
Sind Leerstellen im Pfad der Service-Anwendung?

Was wäre wenn da Leerzeichen wären?

TPeterT 2. Sep 2015 08:11

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Das weiss ich nicht - aber der Pfad hat sich nie geändert. Und funktioniert hat es jahrelang.

baumina 2. Sep 2015 08:23

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Schreib an wichtigen Stellen deines Dienstes in eine Logdatei, dann kannst du das Problem schnell besser eingrenzen.

nahpets 2. Sep 2015 08:24

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Gibt es irgendwelche Informationen im Ereignisprotokoll?

Wenn ja, welche?

TPeterT 2. Sep 2015 08:36

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Ja - im Ereignisprotokoll folgende Meldung:

"Die folgenden Informationen wurden mit dem Ereignis gespeichert:
Der Dienstprozess konnte keine Verbindung mit dem Dienstcontroller herstellen"

Mitschreiben ist eingebaut - aber keine Meldungen, da das Beenden sofort nach Start erfolgt.

taveuni 2. Sep 2015 08:50

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Zitat:

Zitat von TPeterT (Beitrag 1314360)
Hallo!
(..)
Nun habe ich versucht in Delphi 7 eine neue Service-Apllication zu erstellen ohne weiteren Code: selbes Ergebnis > sofort nach dem Starten (aus Delphi heraus) wird wieder beendet (in Wondows 7).
(..)

Reden wir von einem Dienst welcher unter System gestartet wird? Oder unter einem Benutzer? Oder von einer Applikation (da gabs doch mal was mit Desktop - Interaktion - das funktioniert aber seit Vista nicht mehr)? Zeig doch mal den kompletten Quelltext.

TPeterT 2. Sep 2015 08:59

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Hauptsächlich von einem Dienst mit Systemkonto - allerdings mit sichtbare Forms.
Vom Code her: Neue "Service-Application" erstellt und kein weiteren Code eingegeben.
Sollte sich theoretisch schon als Dienst installieren lassen (bzw. auch aus Delphi heraus starten lassen, ohne dass es sich sofort beendet).
Ich kanns als Dienst installieren/desinstallieren - läuft aber nicht (unter Prozesse solle der Dienst dann eigentlich aufscheinen, nehm ich an? Jedenfalls war es bisher so.)

Der Code (bzw. der nicht vorhandene Code):
Delphi-Quellcode:

----------------------------------------------------------------------------------


program Project1;
uses
  SvcMgr,
  Unit1 in 'Unit1.pas' {Service1: TService};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TService1, Service1);
  Application.Run;
end.


----------------------------------------------------------------------------------



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

type
  TService1 = class(TService)
    procedure ServiceExecute(Sender: TService);
  private
    { Private-Deklarationen }
  public
    function GetServiceController: TServiceController; override;
    { Public-Deklarationen }
  end;

var
  Service1: TService1;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  Service1.Controller(CtrlCode);
end;

function TService1.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TService1.ServiceExecute(Sender: TService);
begin
 showmessage('test');
end;

end.

taveuni 2. Sep 2015 09:02

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Zitat:

Zitat von TPeterT (Beitrag 1314380)
Hauptsächlich von einem Dienst mit Systemkonto - allerdings mit sichtbare Forms.

Nein ist seit Vista nicht mehr möglich. Nimm mal ShowMessage raus und mach was anderes. Dann gehts.

nahpets 2. Sep 2015 09:19

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
In der Systemsteuerung unter Dienste mal die Eigenschaften des Dienstes anschauen.
Gibt es unter Anmelden die Option "Datenaustausch zwischen Dienst und Desktop zulassen"?

Ist diese aktiviert? Wenn nein, mal ausprobieren.

TPeterT 2. Sep 2015 09:53

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Ohne Messagebox dasselbe: Start -> sofort wieder beendet.

Ja - Datenaustausch ist aktiviert!

taveuni 2. Sep 2015 13:19

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Start in der IDE oder Start des installierten Services?

baumina 2. Sep 2015 13:26

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Wenn ich Unter Delphi XE eine Service-Application beginne, kommt bei mir folgender Hinweis in der Program-Datei, keine Ahnung ob dich das weiter bringt, hab mich nicht näher damit befasst.

Delphi-Quellcode:
program Project20;

uses
  SvcMgr,
  Unit28 in 'Unit28.pas' {Service28: TService};

{$R *.RES}

begin
  // Windows 2003 Server requires StartServiceCtrlDispatcher to be
  // called before CoRegisterClassObject, which can be called indirectly
  // by Application.Initialize. TServiceApplication.DelayInitialize allows
  // Application.Initialize to be called from TService.Main (after
  // StartServiceCtrlDispatcher has been called).
  //
  // Delayed initialization of the Application object may affect
  // events which then occur prior to initialization, such as
  // TService.OnCreate. It is only recommended if the ServiceApplication
  // registers a class object with OLE and is intended for use with
  // Windows 2003 Server.
  //
  // Application.DelayInitialize := True;
  //
  if not Application.DelayInitialize or Application.Installing then
    Application.Initialize;
  Application.CreateForm(TService28, Service28);
  Application.Run;
end.

TPeterT 3. Sep 2015 05:43

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Beim Starten aus der IDE stoppt sofort - als Dienst installieren, deinstallieren funktioniert - aber startet auch nicht!


Schwer zu sagen wie das gemeint ist - vorallem der Dienst ist auf einem Server 2003 jahrelang gelaufen - eben bis März/April heurigen Jahres. Selbe Auffälligkeite auch auf meinem Entwicklungsrechner und weiteren Testrechnern. Deshalb war mein erster Gedanke, dass ein Update etwas umgestellt hat, was mit Services zu tun hat.

taveuni 3. Sep 2015 07:52

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Liste der Anhänge anzeigen (Anzahl: 1)
Irgendwie habe ich das Gefühl Du hängst noch bei der Applikation. Ich habe mal ein Demoprojekt angehängt. Compiliert mit XE2. Aber das sollte auch mit Delphi 7 gehen. Logischerweise sollte Dein Code dann nicht direkt im Execute ausgeführt werden. Dieser einfache Dienst kann nicht in der IDE ausgeführt werden. Wenn Du ihn aber (als Administrator) installierst, startest, stoppst usw. sollten die Ereignisse im Arbeitsverzeichnis geloggt werden.

Gruss Werner

TPeterT 3. Sep 2015 10:19

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Hallo!

Danke für die Mühe!

Musste die Zeile "if not Application.DelayInitialize or Application.Installing then" auskommentieren - diese funktioneirt in Delphi 7 scheinbar noch nicht.

LogFile:

--- install
03.09.2015 10:53:16: ServiceCreate
03.09.2015 10:53:16: ServiceBeforeInstall
03.09.2015 10:53:17: ServiceAfterInstall
03.09.2015 10:53:18: ServiceDestroy

-- Dienst starten
03.09.2015 10:59:36: ServiceCreate
03.09.2015 10:59:36: ServiceStart
03.09.2015 10:59:36: ServiceExecute start
03.09.2015 10:59:38: ServiceExecute - counter:0

-- Dienst stoppen
03.09.2015 10:59:52: ServiceExecute - counter:7
03.09.2015 10:59:54: ServiceExecute - counter:8
03.09.2015 10:59:54: ServiceStop
03.09.2015 10:59:56: ServiceExecute - counter:9
03.09.2015 10:59:56: ServiceExecute end
03.09.2015 10:59:56: ServiceDestroy

--- uninstall
03.09.2015 10:54:17: ServiceCreate
03.09.2015 10:54:17: ServiceBeforeUninstall
03.09.2015 10:54:17: ServiceAfterUninstall
03.09.2015 10:54:18: ServiceDestroy


Ich versuch mal das Logging in meiner Anwendung...
Vieleicht habe ich zuwenig Information gegeben: Ich habe zusätzlich nach dem Installieren/Starten des Dienstes ein Trayicon zum Öffnen einer Form mit diversen Labels zur Kontrolle.

taveuni 3. Sep 2015 10:27

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Zitat:

Zitat von TPeterT (Beitrag 1314530)
Ich habe zusätzlich nach dem Installieren/Starten des Dienstes ein Trayicon zum Öffnen einer Form mit diversen Labels zur Kontrolle.

Eben genau von dem musst Du dich seit Vista lösen. Die Interaktion mit dem Desktop hat nur bis und mit Windows XP funktioniert. Auch wenn der Service jetzt noch als interaktiv gekennzeichnet ist. Es geht nicht mehr. Im besten Fall läuft Dein Service weiter und die ganzen Forms, Dialogs und weiss der Geier was sonst noch werden einfach nicht angezeigt. Im schlechteren Fall führt das zu Problemen. Seit Vista muss eine Desktop Interaktion mit einem Dienst via Interprozesskommunikation realisiert werden.

TPeterT 3. Sep 2015 10:29

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
So: sehr interessant!

Wenn ma einen Dienst installiert erhält man die Meldung "Dienst installiert". Solange ich diese Meldung NICHT mit OK schliesse, läuft das Service einwandfrei (inkl. der Benutzer-Oberfläche).
Schliesse ich die Meldung, funktioniert der Dienst nicht mehr.

Unter Umständen ein Berechtigungsproblem möglich?

TPeterT 3. Sep 2015 10:31

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Ok - dh. alle Forms entfernen.
Was mich trotzdem wundert, dass es bis heuer ohne Probleme funktioniert hat.

Jumpy 3. Sep 2015 11:24

AW: Delphi 7 - Dienst - Startet seit ca. März 2015 nicht mehr
 
Du betreibst das doch weiterhin mit Windows Server 2003, oder? Dann sollte das mit den Forms ja egal sein. Allerdings meine ich das der Support dafür ausgelaufen ist, also müsstest du über kurz oder lang zu einem neueren Windows Server wechseln und dann trifft das zu.

Kannst du den Dienst nicht mal komplett deinstallieren/deregistrieren und dann neu installieren/registrieren? Oder baumina's Hinweis nachgehen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 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