Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#1

Dienst bringt "Zugriff verweigert" beim Herunterfa

  Alt 16. Jan 2006, 00:03
Ich habe ein Problem beim Debuggen eines Dienstes.
Das Beenden / Neustarten des Dienstes funktiontert im laufenden Betrieb immer fehlerfrei.
Nur beim Herunterfahren / Neustarten von Windows (mit gestartetem Dienst) erhalte ich oft eine Fehlermeldung "Systemfehler 5 , Zugriff verweigert".

Der Dienst läuft unterm lokalen Systemkonto. Er hat ein TForm, das beim Dienststart erzeugt wird, und das interaktiv unter dem jeweils angemeldeten Benutzer eingeblendet wird.

Der Fehler ist derb schwehr zu finden, da er nur beim Herunterfahren des Systems auftritt.
Hat jemand dazu eine Idee ?


Hier der Code der Ereignisbehandlungsroutinen "TService.OnStop" und "TMain.OnDestroy".

Code im OnStop des Dienstes

Delphi-Quellcode:
procedure TCsService.ServiceStop(Sender: TService;
  var Stopped: Boolean);
begin
  service.stopped := true;
  beep();
  if assigned(mainform.Main) then
  begin
    mainform.Main.ServiceStopped := true;
    mainform.Main.LEDStateTimer.Enabled := false;
  end;
  sleep(800);
end;

Code im OnDestroy des "Mainforms"

Delphi-Quellcode:
procedure Tmain.FormDestroy(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to aThreads.count - 1 do
    TWorkerThread(aThreads[i]).Terminate;

  aJobList.Finalize(athreads.count);

  while aThreads.Count > 0 do
  begin
    with TWorkerThread(aThreads[0]) do
    begin
      WaitFor;
      Free;
    end;
    aThreads.Delete(0);
  end;
  aThreads.Free;
  aJoblist.Clear;
  aJobList.Free;
end;


Schöne Grüße,
Jens
  Mit Zitat antworten Zitat