Laden...

Softwarestart durch Windows Dienst: Anwendung nur kurz zu sehen, dann beendet

Erstellt von inek vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.366 Views
inek Themenstarter:in
182 Beiträge seit 2007
vor 9 Jahren
Softwarestart durch Windows Dienst: Anwendung nur kurz zu sehen, dann beendet

Hi zusammen,
ich habe ein kleines Problem damit eine WPF Anwendung durch einen Windows Dienst starten zu lassen.
Hintergrund ist das ich über einen Windows Dienst einen kleinen WatchDog realisieren möchte. Dieser soll alle x Sekunden prüfen ob ein gewisser Prozess läuft, und wenn nicht diesen Starten sowie Windows Logeinträge generieren. Funktioniert an sich beim testen mit z.B.: Notepad oder calc ganz gut. Als ich die Tage dann den Dienst mit meiner c# Anwendung getestet habe, hat natürlich einfach NICHTS funktioniert.

Letztendlich habe ich dann herausgefunden das es anscheinen daran liegt das mein Dienst als LocalSystem User läuft und dieser nur auf seinem Desktop GUIs anzeigen kann.

Daraufhin habe ich die Klasse ApplicationLoader aus Artikel dem Subverting Vista UAC in Both 32 and 64 bit Architectures implementiert um den Desktop des aktuell angemeldeten Users an zu sprechen.

Nächster Test:

Der Dienst funktioniert, der Prozess wird getartet und die GUI ist zu sehen. Allerdings nur ca. 1 Sekunde. Dann wird anscheinend der Prozess komplett abgeschossen.

Da ich sowohl vom Dienst als auch von der WPF-Anwendung die gestartet werden soll Logeinträge schreibe kann ich sehen das Der Dienst den WPF Prozess startet, dieser auch wirklich gestartet ist, Aber dieser nicht korrekt Beendet wird.. also wird er einfach gekillt.

Ich bin mir im KLaren darüber das es an sich nicht geplant ist eine Software von einem Dienst starten zu lassen. Allerdings fällt mir keine bessere Lösung ein um sicher zu stellen das die Software läuft.

Ich hoffe das jemand eine Idee hat wieso der Prozess abgeschossen wird.

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo inek,

wenn bei dem Dienst die Einstellung "Datenaustausch zwischen Dienst und Desktop zulassen" aktiviert ist, dann würde ich darauf tippen, dass sich das Programm selbst beendet, weil es auf einen Fehler gelaufen ist, der vermutlich eine der Ursachen hat, die in [FAQ] Programm läuft in anderer Umgebung nicht (richtig) beschrieben sind. Die Ursache also gar nicht an dem Dienst liegt bzw. nur insofern, dass er eine Umgebung schafft, mit der das Programm nicht klarkommt, weil es (fälschlich) bestimmte Umgebungsbedingungen erwartet.

herbivore

inek Themenstarter:in
182 Beiträge seit 2007
vor 9 Jahren

Hi, sorry für die späte Rückmeldung..
leider habe ich es nicht hinbekommen die Software von meinem Dienst starten zu lassen. Allerdings sind mittlerweile auch Programmteile hinzugekommen die im Userbereich Daten ablegen sollen. Somit habe ich meinen Watchdog umgebaut.

Ich hab jetzt ne eigene .exe geschreiben die ich in
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
eintrage.

Innerhalb der exe läuft n timer der ständig Prüft ob ein bestimmter Prozess läuft. Wenn nicht wird er gestartet.

Is zwar nicht so schön wie ein Dienst, reicht aber für mich aktuell aus.

Dennoch vielen Dank