Wie kann ich meinen Windows-Dienst in der Taskleiste anzeigen lassen?

7

Ich habe einen Windows-Dienst, der beim Start des PCs im Hintergrund läuft. Ich möchte ein Symbol in der Taskleiste anzeigen, um die Konfiguration zu ermöglichen, nachdem ein Benutzer sich angemeldet hat, aber nicht finden kann, wie das geht.

Gibt es ein Ereignis, nach dem ich suchen sollte? Das sagt mir, dass sich ein Benutzer angemeldet hat?

Wie ich weiß, kann Windows Services keine Benutzeroberfläche haben. Muss ich also eine App starten, um das Taskleistensymbol anzuzeigen? Wie kann ich Konfigurationsaktualisierungen an meinen Dienst übergeben?

    
Swinders 17.03.2009, 14:43
quelle

4 Antworten

11

Sie benötigen dazu eine separate "Agent" -Anwendung. Ein Windows-Dienst ist global und wird auf Systemebene ausgeführt. Es können mehrere Desktops gleichzeitig auf dem System ausgeführt werden. Es gibt zwar Möglichkeiten, die Interaktion von Services mit der Desktop-Ebene zu ermöglichen, es ist jedoch bei weitem nicht so einfach, mit dem "Desktop des Benutzers" auf die gleiche Weise wie mit einer Anwendung zu interagieren bereits an eine bestimmte Login / Desktop-Umgebung gebunden.

Es gibt auch Sicherheitsrisiken, wenn ein Diensttunnel in die Desktop-Umgebung integriert wird (es öffnet sich ein Pfad zu einem Systemkonto, wenn der Dienst nicht auf einem eingeschränkteren Dienst ausgeführt wird). Aus diesem Grund ist die Interaktion mit dem Desktop standardmäßig deaktiviert .

    
David 17.03.2009, 14:53
quelle
5

Sie benötigen eine separate Anwendung, um das Tray-Icon anzuzeigen. Sie können mit Ihrem Dienst entweder über WCF kommunizieren, sodass der Dienst einen WCF-Dienst hostet, oder über ServiceController .

    
Jakob Christensen 17.03.2009 14:48
quelle
2

Ich würde eine zweite Anwendung erstellen, die ausgeführt wird und sich in der Taskleiste anzeigt, wenn sich der Benutzer anmeldet.

Sie können Remoting für den Windows-Dienst öffnen und die Konfigurationsaktualisierungen über die exponierten Methoden aus der App in der Taskleiste weitergeben.

    
kemiller2002 17.03.2009 14:45
quelle
2

Eigentlich glaube ich nicht, dass Sie einen Dienst in der Taskleiste anzeigen können. Anwendungen, die dies tun, verwenden immer einen Agenten oder ein anderes Verwaltungswerkzeug.

Die meiste Zeit ist die Anwendung, die im Tray läuft, eine sehr kleine App, die Zugriff auf die Einstellungen für den Dienst gibt.

Konfigurationsoptionen können in der Registry, ini-Datei oder einer anderen Speicheroption gespeichert werden. Nachdem die Konfiguration geändert wurde, müssen Sie nur noch sicherstellen, dass Sie Ihren Dienst neu starten, damit er die neuen Einstellungen erneut laden kann.

    
Wim Haanstra 22.03.2009 19:02
quelle