AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Selbständiger Windows-Dienst ohne Benutzeranmeldung
Thema durchsuchen
Ansicht
Themen-Optionen

Selbständiger Windows-Dienst ohne Benutzeranmeldung

Ein Thema von Nico B. · begonnen am 19. Jan 2010 · letzter Beitrag vom 19. Jan 2010
Thema geschlossen
Nico B.

Registriert seit: 16. Okt 2006
Ort: Riesa
67 Beiträge
 
Delphi XE7 Enterprise
 
#1

Selbständiger Windows-Dienst ohne Benutzeranmeldung

  Alt 19. Jan 2010, 09:12
Hallo Leute,

ich habe eine neue Aufgabenstellung bekommen und weiß nicht mal wie ich richtig anfangen soll.

Ich soll einen Dienst für einen Windows Server 2003 schreiben.
Dieser Dienst soll regelmäßig (bspw. aller 5 Minuten) über ADO-Komponenten 2 Datenbanken miteinander vergleichen.
Der Dienst soll selbständig im Hintergrund laufen, sobald der Server gestartet wurde. Dazu soll sich nicht einmal ein Benutzer anmelden müssen.

Mein Ansatz:
Der Datenbankvergleich ist kein Problem. Nur der Dienst / Service.
Ich habe ein neues Projekt erstellt. Datei >> Neu >> Weitere >> Service-Anwendung.
Zum testen würde ich gern regelmäßig eine Zeile mit der aktuellen Zeit in eine Textdatei schreiben.
Da kann ich erstmal sehen, ob es prinzipiell funktioniert.
Ich habe also einen Timer zu meiner Unit hinzugefügt.

Bisher habe ich folgenden Code:

Delphi-Quellcode:
unit UWGM_Service;

interface

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

type
  TWGM_Refresher = class(TService)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public Deklarartion}
    function GetServiceController: TServiceController; override;
  end;

var
  WGM_Refresher: TWGM_Refresher;

implementation

{$R *.DFM}

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

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

procedure TWGM_Refresher.Timer1Timer(Sender: TObject);
var
  zeile: TStrings;
begin
  zeile:=TStrings.Create;
  zeile.LoadFromFile('D:\Test\test.txt');
  zeile.Add('Test: '+TimeToStr(Now));
  zeile.SaveToFile('D:\Test\test.txt');
  zeile.Free;
end;

end.
Das Programm macht, wenn ich es mit F9 starte, prinzipiell schon mal das was ich möchte, allerdings nur ein mal.
Außerdem kann ich so ja auch nicht sehen, ob es das auch selbständig machen würde.

Was muss ich nun also machen?
Nico Bäger
 
christophspaeth

Registriert seit: 7. Mär 2008
73 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Selbständiger Windows-Dienst ohne Benutzeranmeldung

  Alt 19. Jan 2010, 10:17
Hallo Nico,

was passiert denn, wenn du den Dienst mit Dienstname.exe /install registrierst und aus dem Dienstemanager (z.B. Ausführen - services.msc) startest? Läuft der Dienst oder beendet er sich gleich wieder?

Den Dienst direkt aus dem Debugger starten hab ich noch gar nicht ausprobiert. Ich hab mich da auf die Aussage von einem Kollegen verlassen das gienge nicht - ich starte den Dienst immer über services und verbinde den Debugger dann mit dem Prozess. Aus diesen Grund haben wir es auch oft so, dass wir die eigentlich Anwendung nochmal als einfache Konsolenanwendung implementiert haben, die dann einfach im OnStart gestartet, ggf. in OnExecute überwacht und im OnStop beendet/abgeschossen werden.

Gruß,
Chris
Christoph Späth
 
Nico B.

Registriert seit: 16. Okt 2006
Ort: Riesa
67 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: Selbständiger Windows-Dienst ohne Benutzeranmeldung

  Alt 19. Jan 2010, 13:01
Hallo Chris,

ah, es funktioniert.
Ich wusste bisher nicht wie ich den Dienst genau registrieren/installieren oder was auch immer kann.

Was muss ich nun einstellen, damit der Dienst auch ohne angemeldeten Benutzer startet?
Und wie kann ich eine Beschreibung für den Dienst festlegen?
Wie kann ich den Dienst wieder deregistrieren?
Muss ich den Dienst jedes Mal neu registrieren, wenn ich ihn verändert habe, oder muss ich nur die exe überschreiben?

Fragen über Fragen.
Aber jetzt bin ich schon einen Riesenschritt weiter.

Also dankeschön.

Nico
Nico Bäger
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Selbständiger Windows-Dienst ohne Benutzeranmeldung

  Alt 19. Jan 2010, 13:07
Wie war doch gleich die Forenregel, die du bei der Registration zugestimmt hast? Nur eine Frage pro Thread! und bevor du uns hier Löcher in den Bauch fragst, solltest du dir wohl erstmal ein Tutorial durchlesen, damit du zumindest schon mal ein Grundlagenwissen hast. Geschlossen.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Thema geschlossen


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 11:40 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