2009-03-17 15 views
7

Mam usługę systemu Windows, która działa w tle po uruchomieniu komputera. Chcę wyświetlić ikonę na pasku zadań, aby umożliwić konfigurację po zalogowaniu użytkownika, ale nie mogę tego zrobić.Jak mogę wyświetlić moją usługę systemu Windows na pasku zadań?

Czy jest jakieś wydarzenie, na które powinienem zwrócić uwagę, które mówi mi, że użytkownik się zalogował?

Jak rozumiem, usługi Windows nie mogą mieć interfejsu użytkownika, więc czy muszę uruchomić aplikację, aby wyświetlić ikonę tacy systemowej? Jak przekazać aktualizacje konfiguracji do mojej usługi.

Odpowiedz

11

Będziesz potrzebował oddzielnej aplikacji "agenta" do tego. Usługa Windows jest globalna, działa na poziomie systemu. W systemie może działać wiele pulpitów jednocześnie, więc mimo że istnieją sposoby zezwalania usługom na interakcję z warstwą pulpitu, interakcja z "pulpitem użytkowników" jest tak samo prosta, jak w przypadku aplikacji już związane z określonym środowiskiem logowania/środowiska graficznego.

Istnieje również zagrożenie bezpieczeństwa związane z posiadaniem tunelu serwisowego do środowiska graficznego (otwiera się droga do konta systemowego, chyba że usługa działa w bardziej ograniczonym zakresie), dlatego interakcja z pulpitem jest wyłączona przez domyślna.

+3

To jest poprawna odpowiedź. Nazwana potok stanowi dobry sposób komunikacji usługi z agentem tacy systemowej. ALE: proszę rozważyć, czy twoja usługa naprawdę jest wystarczająco niesamowita [http://blogs.msdn.com/b/oldnewthing/archive/2010/12/15/10105142.aspx], aby zasłużyć na własną ikonę w zasobniku systemowym. –

2

Chciałbym utworzyć drugą aplikację, która biegnie i sama wyświetla w zasobniku systemowym, gdy użytkownik loguje się.

Można otworzyć usług zdalnych do usługi Windows i przekazać aktualizacje konfiguracyjnych poprzez narażonych metod z aplikacji w taca systemowa.

5

Potrzebna będzie osobna aplikacja, aby wyświetlić ikonę zasobnika. Możesz komunikować się z usługą za pośrednictwem WCF, umożliwiając usługodawcy usługę WCF lub przez ServiceController.

2

Nie sądzę, że można wyświetlić usługę w zasobniku systemowym. Aplikacje robiące to zawsze używają agenta lub innego narzędzia zarządzającego.

W większości przypadków aplikacja uruchomiona w zasobniku jest bardzo małą aplikacją dającą dostęp do ustawień usługi.

Opcje konfiguracyjne mogą być przechowywane w rejestrze, pliku Ini lub dowolnej innej opcji przechowywania. Po zmianie konfiguracji wystarczy, że ponownie uruchomisz usługę, aby ponownie załadować nowe ustawienia.

Powiązane problemy