Dienst startet nicht

8

Ich habe einen Windows-Dienst mit Delphi erstellt und zwei Methoden zum Installieren, Starten und Stoppen verwendet.

Methode 1

wenn ich diesen Dienst über die Befehlszeile

installiere %Vor%

Es wurde erfolgreich installiert und ich kann auch in der Servicekonsole starten und stoppen.

Methode 2

aber wenn ich den gleichen Dienst mit anderem Namen mit sc installiere z.B.

%Vor%

Ich sehe, dass es installiert ist, aber ich kann den Dienst nicht über die Servicekonsole starten mit

%Vor%

Wenn ich mit SC abfrage, sind die Ergebnisse wie folgt

%Vor%

bis jetzt habe ich / Install benutzt, aber ich möchte denselben Dienst mehrmals mit verschiedenen Namen installieren, ich habe diese Idee von diesem Beitrag zu verwenden. ( So installieren Sie ein Windows Dienst von der Befehlszeile, der Name und Beschreibung spezifiziert? ) kann jemand den Unterschied des Verhaltens zwischen / Install und SC erklären?

    
Girish 03.09.2013, 18:33
quelle

1 Antwort

13

Sie haben einen Konflikt in TService implementation verursacht, siehe QC # 79781 . Delphi kann den Dienst nicht starten, wenn sich der Dienstname von TService.Name unterscheidet.

Sie können diese Einschränkung jedoch vermeiden, indem Sie TService.Name anpassen, bevor der Dienst gestartet wird. Ein guter Punkt dafür ist das TService.OnCreate -Ereignis. Sie müssen den tatsächlichen Namen des Service kennen, also müssen Sie ihn als Argument an die Service-Exe übergeben (indem Sie ihn zum binpath des Befehls sc create hinzufügen).

Erstellen Sie den Service:

%Vor%

Passen Sie den Namen an:

%Vor%

Dies ist eine etwas rudimentäre Art der Argumentanalyse, aber als Beispiel ist es in Ordnung. Wenn das erste Argument nicht mit / oder - beginnt, wird davon ausgegangen, dass es sich um den angegebenen Namen handelt.

Anmerkung:

Eine weitere Einschränkung von TService ist, dass es keine Services (mit /install ) mit Argumenten in der Befehlszeile erstellen kann, weil es ParamStr(0) als binpath verwendet.

    
JRL 03.09.2013, 21:52
quelle

Tags und Links