Odpowiedzi:
Głównie ze względów bezpieczeństwa.
Jak rozumiem, gdy usługa Windows tworzy kontrolki GUI takich jak MessageBox, były zazwyczaj tylko zobaczyć w sesji, która biegnie usługi w IE Session 0 które również wykorzystywane być pierwszy użytkownik zalogowany lokalnie lub przez kogoś logowania się przy użyciu mstsc / admin. Dlatego ten użytkownik zobaczy te elementy sterujące i będzie mógł wchodzić w interakcje z usługą.
Jednak ze względów bezpieczeństwa sesja 0 jest teraz zarezerwowana, a pierwszy użytkownik, który się zaloguje, otrzyma nową sesję, a zatem nie będzie widzieć elementów sterujących GUI.
Ponieważ psuje to całkiem sporo usług, dla zachowania zgodności istnieje proces (patrz blog MSDN), który próbuje wykryć, czy wyświetlane są jakieś komunikaty, i wyskakuje z ostrzeżeniem: „Program działający na tym komputerze próbuje wyświetlić wiadomość ”i pozwala wyświetlić lub zignorować wiadomość.
Microsoft ma WhitePaper na ten temat, który można pobrać stąd
Podejrzewam również, że innym drobnym powodem jest to, że funkcja została niewłaściwie użyta / źle zrozumiana i doprowadziła do złych projektów. Na przykład miałem kiedyś stary serwer z usługą innej firmy, która wyświetlała niektóre powiadomienia / błędy za pomocą okna komunikatu zamiast zapisywania w dzienniku zdarzeń. Ale nigdy nie logowałem się lokalnie i rzadko logowałem się w trybie administracyjnym, dlatego nie widziałem wiadomości.
Kiedyś możliwe były usługi interaktywne , ale model usług to proces uruchamiany niezależnie od dowolnego użytkownika. Są zaprojektowane tak, aby działały bez nadzoru i dlatego nie powinny wymagać GUI.
Usługi interaktywne nie były dostępne od systemu Windows Vista, dlatego nie należy ich już używać.
Jeśli musisz wchodzić w interakcję z usługą, strona, do której prowadzę link, zaleca utworzenie oddzielnej aplikacji GUI, która komunikuje się z usługą poprzez komunikację międzyprocesową (IPC) - np. Nazwane potoki.
Ponieważ usługi mają działać w tle bez interakcji z użytkownikiem; mogą faktycznie działać, gdy żaden użytkownik nie jest zalogowany.
Tak, było to możliwe i działało. Po zalogowaniu masz interfejs aplikacji. Było to bardzo przydatne w przypadku starszych aplikacji, które nie mają dostępnej usługi, ale nadal muszą działać na serwerze. Chociaż nie było to najbardziej stabilne rozwiązanie. Został uruchomiony jako użytkownik, który mógł go kliknąć lub wylogować. To nie było bardzo miłe.
Teraz wszyscy rozwijają natywne usługi i dodają aplikację lub dziennik do zarządzania usługą. To dobry wzorzec projektowy i jest teraz używany przez większość czasu.
Postaraj się więc postrzegać to jako dziedzictwo, które było możliwe.
Usługi te są przeznaczone do operacji bez nadzoru, głównie w tle. Sama usługa nazw oznacza działanie jako serwer dla niektórych aplikacji klienckich lub innych usług korzystających z tej usługi. Więc MS może chcieć teraz trzymać się podstaw i chcieć wprowadzić wyraźne rozróżnienie między usługami a aplikacjami, więc aplikacje utrzymują zajęte zastosowania i pozwalają usługom cicho spełniać swoje zadanie. Podczas gdy obcinacz do paznokci istnieje, dlaczego wybrać nóż kuchenny do wycinania zera?