Einzelnen Beitrag anzeigen

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, 08: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