Autor Beitrag
Solaris
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33



BeitragVerfasst: Mo 05.03.07 01:12 
Hi,

ich wollte heute mal zum testen ein kleines Programm schreiben, das als Dienst im Hintergrund von Windows läuft.
Mit Hilfe von "Datei -> Neu -> Service Anwendung" habe ih ein neues Projekt erstellt. Ein bisschen Code zum spielen reingeschrieben (erstmal nur ganz normale Dinge wie z.B. Anzeigen einer Message Box nach drei Minuten usw.).

Leider lief es nicht ganz so gut wie ich mir das erhofft hatte. Da der Dienst nicht starten wollte habe ich in der Ereignisanzeige mal gestöbert und auch glatt eine Meldung vom System erhalten die direkt nach dem start meines Programmes angelegt wurde.

Hier die Beschreibung des Fehlers der mir in der Ereignisanzeige ausgegeben wurde:
Die Beschreibung der Ereigniskennung ( 0 ) in ( DatsichServices.exe ) wurde nicht gefunden. Der lokale Computer verfügt nicht über die zum Anzeigen der Meldungen von einem Remotecomputer erforderlichen Registrierungsinformationen oder DLL-Meldungsdateien. Möglicherweise müssen Sie das Flag /AUXSOURCE= zum Ermitteln der Beschreibung verwenden. Weitere Informationen stehen in Hilfe und Support. Ereignisinformationen: Der Vorgang wurde erfolgreich beendet.


Leider habe ich zu dieser Meldung keine hilfreichen Antworten in der Delphi Hilfe, der Windows Hilfe und über dieses Forum gefunden.
Ich hoffe jedoch das Ihr mir weiterhelfen könnt.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 05.03.07 01:28 
Du wirst deine Messagebox nie sehen. Grund siehe hier: www.michael-puff.de/...indow_Stations.shtml

Und hier die Erklärung zu der Fehlermeldung aus der Eriegnianzeige: www.michael-puff.de/...22_ReportEvent.shtml
Solaris Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33



BeitragVerfasst: Mo 05.03.07 11:31 
Danke schonmal für deine Bemühungen. Ich glaube allerdings das du mein Problem etwas falsch verstanden hast.
Ich wollte mit meinem Programm keinen Eintrag in der Ereignisanzeige erstellen. Der Eintrag ist nur eine Fehlermeldung, die ich bekam als ich einen Dienst schreiben wollte.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 05.03.07 13:02 
Doch, ich habe dich schon verstanden. Du solltest den Artikel über die Ereignisanzeige mal ganz lesen, dann wpürdest du auch das finden:
Zitat:
Natürlich müssen die Pfade sehr wahrscheinlich angepasst werden, je nach dem wohin das Archiv mit der Demo entpackt wurde. Wird kein Eintrag in der Registry gefunden oder wurde das angegeben Modul nicht gefunden, wird ein Standardtext angezeigt, der in etwa so aussehen kann:

Zitat:
Die Beschreibung der Ereigniskennung ( 256 ) in ( Demo ) wurde nicht gefunden. Der lokale Computer verfügt nicht über die zum Anzeigen der Meldungen von einem Remotecomputer erforderlichen Registrierungsinformationen oder DLL-Meldungsdateien. Möglicherweise müssen Sie das Flag /AUXSOURCE= zum Ermitteln der Beschreibung verwenden. Weitere Informationen stehen in Hilfe und Support. Ereignisinformationen: Hallo.
Solaris Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33



BeitragVerfasst: Mo 05.03.07 14:37 
Im angegebenen Pfad in der Registry habe ich einen neuen Schlüssel (so einen Unterordner) angelegt. Daraufhin habe ich die vier Werte eingetragen in dem neuen Schlüssel.
Nach einem Test habe ich dann im Ereignisprotokoll nachgesehen und es war der gleiche Fehler wie sonst auch zu finden.
Ich habe extra nochmal die Pfade überprüft und die beiden Werte angesehen und es war alles so angelegt wie ich es im Beispiel gelesen habe.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 05.03.07 15:05 
Du hast den Artikel immer noch nicht richtig gelesen. Damit im Ereignisprotokoll der Fehler mit einem aussagekräftigen Text eingetragen wird, muss du ihm angeben, in welcher DLL er die Fehlertexte findet. Und diese wiederum sind besondere StringRessourcen. Das war lediglich dazu da, dir den komischen Eintrag in der Ereignisanzeige zu erklären.

Sollte dein Dienst immer noch nur aus der Messagebox bestehen, dann lies dir meine Artikel durch, den ich im ersten Link verlinkt habe.
Solaris Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33



BeitragVerfasst: Mo 05.03.07 15:56 
Wenn ich dich jetzt richtig verstanden habe ist dein zweiter Link nur dazu da, um mir zu sagen wie ich mit dem Ereignisprotokoll umgehen soll wegen der Fehlermeldung. Ich habe am Anfang gedacht, dass mir dein Link zeigt, wie ich den Dienst zum laufen kriege. Daher war ich etwas verwirrt vom Inhalt.

Der Dienst soll jetzt dazu da sein, Dateien regelmäßig von Ordner A nach Ordner B zu kopieren. Das mit der Ausgabebox habe ich erstmal verworfen.
Solaris Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33



BeitragVerfasst: Di 06.03.07 16:44 
So mein Programm läuft nun als Dienst mehr oder weniger mit Funktionen.
Ich habe nicht an den Parameter "/install" gedacht.

Nun habe ich ein neues Problem.

Der Dienst soll als interaktiver Dienst laufen damit ich auf die Windows Station vom Standard-User zugreifen kann.

Ich habe schon den Service im Objektinspektor auf "Interactive : true" gesetzt.
Leider kann ich immernoch keine kleine Form öffnen.

Wie kann ich nun durch meinen Dienst eine kleine Form erscheinen lassen?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 06.03.07 17:21 
Verabschiede ich von interaktiven Diensten. Sie stellen eine Sicherheitslücke dar und werden unter Windows Vista aus diesem Grund auch nicht mehr unterstützt. Schreibe ein Frontend, welches mit dem Service über IPC kommuniziert.
Solaris Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33



BeitragVerfasst: Mi 07.03.07 12:01 
Das mit den Interaktiven Diensten lasse ich dann doch lieber.

Geplant habe ich momentan folgendes:
Ein kleines Programm soll Quell und Ziel Pfade in der Registry hinterlegen (HKEY_LOCAL_MACHINE als Rootkey).
Der Dienst soll dann die Pfade aus dem RegistryKey auslesen und die Datei die im Quellpfad liegt zum Zielpfad kopieren.

Bisher wurde noch keine Datei kopiert obwohl der Timer im Service schon längst aktiviert wurde. Kann es sein das mein Dienst nicht auf den Registryeintrag zugreifen kann?

Thema hat sich erledigt...