2008-09-11 11 views
6

W starszych wersjach systemu Windows przed Vista można mieć usługę systemu Windows współdziałać z bieżącym zalogowanym użytkownikiem pulpitu, aby ułatwić wyświetlanie informacji na ekranie z usługi. W systemie Windows Vista dodano 0 sesji dla bezpieczeństwa w celu odizolowania usług od komputera. Jaki jest łatwy sposób komunikacji między usługą a aplikacją działającą poza sesją 0? Do tej pory doszedłem do tego, używając TCP/IP do komunikacji między dwoma, ale wydaje się, że jest to rodzaj niechlujnego sposobu, aby to zrobić.Jak komunikować się między sesją Windows Vista Session 0 a pulpitem?

Odpowiedz

4

Możesz używać pamięci współdzielonej lub nazwanej potoku, aby ułatwić także IPC. Koncepcyjnie jest to podobne do protokołu TCP/IP, ale nie musisz się martwić o znalezienie nieużywanego portu.

Musisz upewnić się, że utworzone obiekty nazwane są poprzedzone "Global \", aby umożliwić im dostęp do wszystkich sesji zgodnie z opisem here.

AFAIK nie ma możliwości, aby usługa bezpośrednio współpracowała z pulpitem.

3

Rzeczywiście, ze względów bezpieczeństwa nie można już komunikować się bezpośrednio z "pulpitem". Czym właściwie jest "komputer", kiedy mieszkasz w maszynie z wieloma aktywnymi użytkownikami + sesjami zdalnymi?

Ogólnym sposobem rozwiązania problemu jest korzystanie z aplikacji serwisowych, które komunikują się za pośrednictwem niektórych mechanizmów RPC (TCP/IP, IPC, .Net Remoting Channels na jednym z nich itp.). To rodzaj bólu, ale myślę, że korzyści są warte zmian.

1

Aby usługa mogła komunikować się z komputerem stacjonarnym, utknąłeś w jednym z mechanizmów RPC. Mechanizm zdalnego dostępu .NET (IpcServerChannel) nie jest trudny do wdrożenia w tym celu.

Również z aplikacją .NET aplikacja komputerowa może wysyłać wiadomości bezpośrednio do usługi za pomocą ServiceController.ExecuteCommand. Te polecenia są odbierane przez usługę za pośrednictwem ServiceBase.OnCustomCommand. Jest to jeszcze łatwiejsze i wszystko, czego potrzebujesz, jeśli kontrolowanie usługi jest Twoim jedynym wymaganiem.

Powiązane problemy