2009-03-17 18 views
7

Ich habe einen Windows-Dienst, der im Hintergrund läuft, wenn der PC startet. Ich möchte ein Symbol in der Taskleiste anzeigen, um die Konfiguration zu ermöglichen, nachdem sich ein Benutzer angemeldet hat, aber nicht finden kann, wie das geht.Wie kann ich meinen Windows-Dienst in der Taskleiste anzeigen lassen?

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

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

Antwort

11

Sie werden eine separate "Agent" -Anwendung dafür benötigen. 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 zuzulassen, 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 bei einem Diensttunnel in der Desktopumgebung (es öffnet sich ein Pfad zu einem Systemkonto, wenn der Dienst nicht auf einem eingeschränkteren ausgeführt wird), weshalb die Interaktion mit dem Desktop deaktiviert ist Standard.

+3

Dies ist die richtige Antwort. Eine Named Pipe bietet eine gute Möglichkeit für den Dienst, mit dem Taskleisten-Agent zu kommunizieren. ABER: Bitte beachten Sie, ob Ihr Service wirklich super-genial genug ist [http://blogs.msdn.com/b/oldnewthing/archive/2010/12/15/10105142.aspx], um ein eigenes Icon in der Taskleiste zu verdienen. –

2

würde ich eine zweite Anwendung erstellen, die selbst läuft und zeigt in der Taskleiste, wenn sich der Benutzer anmeldet.

Sie Remoting auf den Windows-Dienst öffnen kann, und übergeben Sie die Konfigurations-Updates durch exponierten Methoden aus der App in das Systemfach.

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 hosten kann, oder über ServiceController.

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 läuft die Anwendung im Tray eine sehr kleine App, die Zugriff auf die Einstellungen für den Dienst gibt.

Konfigurationsoptionen können in der Registrierung, 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.

Verwandte Themen