AGB  ·  Datenschutz  ·  Impressum  







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

Problem : Dienst unter Windows 2003

Ein Thema von moelski · begonnen am 6. Okt 2009 · letzter Beitrag vom 6. Okt 2009
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Problem : Dienst unter Windows 2003

  Alt 6. Okt 2009, 10:23
Moin !

Ich habe einen kleinen Dienst geschrieben der eigentlich nix anderes tut als Anwendungen im System Mode nachzustarten. Funzt auf XP ganz gut.

Unter Server 2003 geht das aber nicht. Im eventlog steht folgendes:
Zitat:
Der Dienstprozess konnte keine Verbindung mit dem Dienstcontroller herstellen.
Wenn man den Service erstellen lässt, dann steht da ja auch schon folgendes:
Zitat:
// Für Windows 2003 Server muss StartServiceCtrlDispatcher
// CoRegisterClassObject aufgerufen werden, das von Application.Initialize
// indirekt aufgerufen werden kann. TServiceApplication.DelayInitialize ermöglicht,
// dass Application.Initialize von TService.Main aufgerufen werden kann
// (nachdem StartServiceCtrlDispatcher aufgerufen wurde).
//
// Eine verzögerte Initialisierung des Application-Objekts könnte sich auf
// Ereignisse auswirken, die dann vor der Initialisierung auftreten, wie z.B.
// TService.OnCreate. Dies wird nur empfohlen, wenn ServiceApplication
// ein Klassenobjekt bei OLE registriert und sollte nur in Verbindung mit
// Windows 2003 Server verwendet werden.
Kann mir jemand mal ein Stückchen Code zeigen wo ich nun was zusätzlich aufrufen muss?

Ich habe im Web dazu das gefunden:
Delphi-Quellcode:
function IsRunningInInstallMode : Boolean;

  function FindSwitch(const Switch: string): Boolean;
  begin
    Result := FindCmdLineSwitch(Switch, ['-', '/'], True);
  end;

begin
  Result := FindSwitch('REGSERVER') or FindSwitch('UNREGSERVER') or
            FindSwitch('INSTALL') or FindSwitch('UNINSTALL');
end;

procedure TAISConnectMail.ServiceExecute(Sender: TService);
begin
  { Windows 2003 Server support. The problem is that you should always call
    StartServiceCtrlDispatcher (done in VCL) before calling CoRegisterClassObject
    (done from Application.Initialize). Win2003 now enforces this explicitly, but
    earlier versions did nothing if this was done improperly. }

  if not IsRunningInInstallMode then
    SvcMgr.Application.Initialize;

  while not Terminated do
  begin
    ServiceThread.ProcessRequests(false);
    Sleep(500);
  end;
end;
Aber das funktioniert bei mir so nicht.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: Problem : Dienst unter Windows 2003

  Alt 6. Okt 2009, 10:44
Ich glaube, Dein Problem liegt wo anders. Wie startest Du denn die zusätzlichen Anwendungen? Wo liegen denn die zusätzlichen Anwendungen? Wenn die z.B. auf einem Netzwerklaufwerk liegen, dann kann der Dienst, der unter dem Systemkonto gestartet ist, nicht darauf zugreifen, da je keine Anmeldeinformationen zum Netzwerklaufwerk vorhanden sind.
Kannst Du genau bestimmen, wann das Problem in Deinem Code auftaucht.

Ich selbst habe auch einen Dienst unter Server 2003 am laufen und habe da nichts extra Programmiert (IsRunnunInInstallMode)

Grüße Sven
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

Problem erledigt : Dienst unter Windows 2003

  Alt 6. Okt 2009, 10:52
Moin !

Ich glaube es war mein eigener Fehler.
Ich wollte den Dienst mit "name /REGISTER" installieren. Wenn ich statt dessen "name /INSTALL" verwende klappt es wunderbar.

Zitat:
Ich glaube, Dein Problem liegt wo anders.
Ne das geht schon. Die zusätzlichen Anwendungen sind zugreifbar für den Dienst und die sollen auch im System Context mit laufen.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  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 04:45 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