Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Benutzerinteraktion mit Windowsdienst (https://www.delphipraxis.net/206841-benutzerinteraktion-mit-windowsdienst.html)

Tim-94 8. Feb 2021 07:42

AW: Benutzerinteraktion mit Windowsdienst
 
Hi Leute,

Freut mich, dass alle schon so fleißig geschrieben haben. Hier gibts eine kleine Sammelantwort:

Zitat:

Zitat von QuickAndDirty (Beitrag 1482369)
Der Grund warum das so aufwändig ist, was du vorhast ist der, dass Dienste quasi einen eigenen Desktop haben alles was die starten oder Anzeigen popt dort auf.
Ich nehme an du willst nicht, dass eine Oberflächen-Anwendung im context des Users über Autostart gestartet wird die evtl. als Tray-Icon läuft?
Oder Benachrichtigungen in der Windows-Sidebar anzeigen?

Genau das wollte ich versuchen zu umgehen. Ich wollte eigentlich ausschließlich einen Dienst haben, welcher meine Aufgaben erfüllen kann. Von diesem Konzept musste ich allerdings Abstand nehmen (siehe unten).

Zitat:

Zitat von CCRDude (Beitrag 1482133)
Du brauchst keine Passwörter, es reicht wenn Du das Token der fraglichen Session dupliziert und für CreateProcessAsUser verwendest. So verwende ich das von einem Dienst aus problemlos, um Feedback anzuzeigen / abzufragen.

Stichworte: TcbPrivilege, DebugPrivilege, ImpersonatePrivilege, WTSGetActiveConsoleSessionId, WTSQueryUserToken (Stolperfalle: funktioniert nur von Systemdiensten aus), DuplicateTokenEx, CreateProcessAsUser. War meine ich hier schonmal Thema :)

Ich habe das halbe Wochenende dran gesessen und es ausprobiert, jedoch leider ohne Erfolg...vielleicht war ich einfach zu blöd :lol:


Zitat:

Zitat von himitsu (Beitrag 1482372)
Jupp, im Prinzip hast ja nur ein paar Möglichkeiten.
  • ein TrayProgramm, was zusätzlich beim Einloggen im Benutzerkontext gestartet wird und die ganze Zeit mitläuft (AutoRun oder geplante Aufgabe beim Login und ohne Tray, siehe Dienst im Nutzerkontext)

Danke himitsu für deine ganzen Vorschläge. Da ich mich nach den ganzen Fehlversuchen am Wochenende so geärgert (:?) habe, habe ich mich für diese Variante entschieden. Der Dienst kommuniziert nun über TCP/IP mit der Anwendung, welche bei jedem Login eines Benutzers ausgeführt wird (Autostart - HKEY_LOCAL_MACHINE - RUN). Die gesamte Kommunikation funktioniert auch ganz hervorragend.

Zitat:

Zitat von jaenicke (Beitrag 1482384)
Werden wirklich Formulare bzw. echte Anwendungen benötigt? Würden nicht Webseiten reichen? Das ist heute der übliche Weg zur Interaktion mit Diensten.

Zitat:

Zitat von himitsu (Beitrag 1482372)
als Bugfix für "uralte" Software kann man einen Dienst zwar auch als "interaktiv" einrichten (Dienste > Eigenschaften > Anmeldung > Datenaustausch mit Desktop zulassen), aber sowas macht man nicht

Das funktioniert mittlerweile gar nicht mehr, auch nicht mit Tricks. Die Funktionalität wurde entfernt.

Der Weg mit den Webseiten wäre für mich nicht zielführend gewesen, da die Anforderung ein autonom agierendes System, welches ohne Zutun der Benutzer Hinweismeldungen etc. anzeigen kann, gefordert war. Trotzdem danke für deinen Vorschlag. PS: Das die CheckBox mit der Desktopinteraktion irgendwie keine Auswirkungen mehr hat, ist mir auch aufgefallen.


Vielen Dank nochmal für die ganzen Antworten. Ich habe die Markierung als offene Frage für den Beitrag nun zurückgenommen. Für mich wäre das Thema damit geklärt. Falls wieder mal jemand vor solch einer Problematik steht oder noch Fragen zur Umsetzung hat, darf er mich gerne anschreiben.

Alle schön gesund bleiben :wink:

QuickAndDirty 9. Feb 2021 12:28

AW: Benutzerinteraktion mit Windowsdienst
 
Zitat:

Zitat von Tim-94 (Beitrag 1482458)
HDanke himitsu für deine ganzen Vorschläge. Da ich mich nach den ganzen Fehlversuchen am Wochenende so geärgert (:?) habe, habe ich mich für diese Variante entschieden. Der Dienst kommuniziert nun über TCP/IP mit der Anwendung, welche bei jedem Login eines Benutzers ausgeführt wird (Autostart - HKEY_LOCAL_MACHINE - RUN). Die gesamte Kommunikation funktioniert auch ganz hervorragend.

Ich kenne das auch nur so. Irgendwie machen das alle so!

himitsu 9. Feb 2021 12:58

AW: Benutzerinteraktion mit Windowsdienst
 
Es ist halt "einfach",
auch wenn es jeden nervt, wenn andauernd Millionen Programme im Hintergrund laufen und den Tray vollmüllen.

(vorallem die tausenden Updater, welche eigentlich nie was tun und man sie hätte so schön zeitgesteuert in der Aufgabenplanung eintragen können)

Moombas 9. Feb 2021 14:42

AW: Benutzerinteraktion mit Windowsdienst
 
Naja, wenigstens kann man sie ja mittlerweile im Tray auch ausblenden.

jaenicke 10. Feb 2021 04:33

AW: Benutzerinteraktion mit Windowsdienst
 
Zitat:

Zitat von Moombas (Beitrag 1482597)
Naja, wenigstens kann man sie ja mittlerweile im Tray auch ausblenden.

Das hört sich so an als ginge das erst seit kurzem, aber eingeführt wurde das ja mit XP vor knapp 20 Jahren. ;-)

Moombas 10. Feb 2021 07:10

AW: Benutzerinteraktion mit Windowsdienst
 
Ja, ok. Bin halt auch schon länger dabei :D
Aber viele vergessen das halt.

Im Tray laufen lassen, im Tray ausblenden und es ist für den Benutzer weder störend noch direkt sichtbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz