Jump to content

Programm als Dienst starten


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo meine Genies

 

bevor mich jemand ob meiner Frage steinigen will, wie hier http://www.mcseboard.de/showthread.php?s=&threadid=18808&perpage=10&pagenumber=2 , ist alles legitim und absolutly sauber :)

 

Folgendes Szenario:

WinNT-Client, bedient mittels GUI-Progrämmchen eine Tankstellen-Zapfsäule per serieller Schnittstelle. Damit die Tankerei klappt, muss sich ein User anmelden. Durch einen Autostarteintrag startet das zugehörige Programm (exe) und liegt als grafisches Fenster auf dem Desktop. Eigentlich hat der User weiter nix zu tun, als ab und zu mal reinzusehen und ggf. gesperrte Zapfsäulen mit einem Klick auf einen Button wieder zu entsperren.

Ich muss aber gewährleisten, dass die Tankerei auch funzt, wenn keiner angemeldet ist. Hab also bereits versucht, das ganze als Dienst per instsvr.exe reinzubasteln. No chance :(

Gibt es eine andere Lösung, auch wenn meine Angaben nicht grad sehr ausführlich sind? Die Firma, die das Teil an uns verkauft hat ist jedenfalls nicht in der Lage das Problem zu lösen, leider...

 

Thomas

Link zu diesem Kommentar

Ich vermute, daß das nicht geht. Und zwar einfach deshalb, weil es ein GUI-Programm ist, ein Dienst jedoch keinerlei Userinterface haben darf. Das heißt, ein Programm mit GUI ruft gewisse Windows-Funktionen auf, um ein Fenster zu erzeugen und startet dann einen Thread, der auf Benutzereingaben und Mausklicks in einer Dauerschleife wartet. Das als Dienst laufen zu lassen kann nicht funktionieren.

 

Da müßte die herstellende Firma zwei Komponenten bereitstellen: Den eigentlichen Dienst, der bsp. nur Statusmeldungen zurückliefert und ein Konsolen- oder graphisches Programm, das diese entgegennimmt, anzeigt und auf Klick oder Tastendruck entsperrt. Ansonsten: No chance.

 

-----------

Gruß, Auer

Link zu diesem Kommentar

Der Haken in der Dienstverwaltung nutzt nichts, wenn das Ding nicht entsprechend programmiert ist. Und einen Dienst 'bloß als Dienst' zu programmieren oder ihn zusätzlich mit einer GUI zu versehen, ist ein ziemlicher Unterschied.

 

Skizziert: Normaler Dienst -> Exe ohne GUI, eine wartende Dauerschleife, Arbeitsthread, Fehler ins EventLog, Instanz bricht ab, falls Aufruf interaktiv.

 

Dienst mit GUI: Alles von oben. Zusätzlich muß bsp. beim Start der interaktiven Instanz geprüft werden, ob der Dienst läuft, falls ja, muß ständig mit diesem kommuniziert werden, Fehlermeldungen zum Nutzer. Interprozeßkommunikation (3) ist etwas 'ganz anderes' als die noch einfachere Multithreadkommunikation (2) innerhalb eines Prozesses, dies wiederum ist komplizierter als das übliche lineare Programmieren (1). Alternative: GUI-Instanz merkt, daß Dienst läuft, signalisiert diesem etwas, beendet sich, Dienst startet zusätzlichen Thread, der Nutzermaske anzeigt. Beim Abmelden darf nur dieser Teil beendet werden, ohne Speicherlecks zu produzieren, der normale Dienst muß weiterlaufen.

 

Sprich: Drastischer Unterschied im Aufwand, der Haken funktioniert nur dann, wenn der Rest schon gemacht ist.

 

-------------

Gruß, Auer

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...