Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#10

Re: bekomme den service nicht zum laufen...

  Alt 23. Okt 2008, 11:34
liegt der Dienst auch unter c:\test?

mache mal vom cmd aus folgendes:
Code:
D:\Delphi7\Projects>project1 /install

D:\Delphi7\Projects>net start Testservice
TestService wird gestartet.
TestService wurde erfolgreich gestartet.

D:\Delphi7\Projects>net stop Testservice
TestService wird beendet...
TestService wurde erfolgreich beendet.

D:\Delphi7\Projects>project1 /uninstall

D:\Delphi7\Projects>
sieht das bei Dir genauso aus?

Die Ausgabedatei muss jetzt so aussehen:
Code:
23.10.2008 11:16:37 Service gestartet
23.10.2008 11:16:55 OnExecute
Wenn es Rechte sein könnten:
Was für Rechte hast Du auf dem Rechner?

Geh mal in die Systemsteuerung zu den Diensten und rufe die Eigenschaften des Dienstes auf. Dort gibt es den Reiter Anmelden. Gib' dort bei Dieses Konto ein Konto an, dass garantiert alle Rechte hat (also z. B. das lokale Adminkonto des Rechners). Dienst stoppen und Dienst starten, wenn's dann geht, ist es ein Rechteproblem.

Wenn's nicht geht, poste bitte den Quelltext so, wie er jetzt ist, dann werd' ich es nochmal versuchen.
Wenn irgendmöglich, verabschiede Dich bei der Protokollierung von der Stringliste. Schreibe jede Zeile mit WriteLn(f,'text') in die Logdatei. Du bekommst im Dienst einfach nicht mit, wenn bei der Arbeit mit der Stringliste eine Exception auftritt. Ich weiß nicht, wie ein Dienst intern abläuft und ob die Stringliste bei jedem Aufruf von ServiceExecute initialisiert ist, sprich, ob ein einmaliges Create für die gesamte Laufzeit des Dienstes ausreicht. Wenn nicht, kracht das hier mit ziemlicher Sicherheit und ServiceExecute wird mit 'ner Exception abgebrochen. Das bekommst Du von außen nicht mit.
Versuch' die Protokollierung erstmal nur so (mit fest verdrahtetem Dateiname, die steht dann halt im Verzeichnis der Exe):
Delphi-Quellcode:
AssignFile(f,'LogFileName');
If FileExists('LogFileName') Then Append(f) Else ReWrite(f);
WriteLn(f,DateToStr(Now) + ' ' + TimeToStr(Now) + ' ' + 'Steht hier jetzt auch wirklich der Text in der Datei');
CloseFile(f);
Auch wenn hier andauernd geprüft wird, ob eine Datei schon existiert und sie andauernd auf und zu gemacht wird. Zuerst muss 'ne Billigvariante laufen, bevor es auch was komplizierter werden darf.
  Mit Zitat antworten Zitat