Hauptsächlich aus Sicherheitsgründen.
Wie ich es verstehe, wenn ein Windows - Dienst GUI - Controls wie eine MessageBox erzeugt wurden sie in der Regel nur in der Session zu sehen , dass die Dienste läuft in dh Sitzung 0 , die auch verwendet lokal oder von jemandem Logging protokolliert auf dem ersten Benutzer sein über die Verwendung mstsc / admin. Daher würde dieser Benutzer diese Steuerelemente sehen und könnte mit dem Dienst interagieren.
Aus Sicherheitsgründen ist Sitzung 0 jetzt reserviert und der erste Benutzer, der sich anmeldet, erhält eine neue Sitzung und sieht daher die GUI-Steuerelemente nicht.
Da dies viele Dienste beeinträchtigt, gibt es aus Kompatibilitätsgründen einen Prozess (siehe dieses MSDN-Blog) , der versucht, festzustellen, ob Nachrichten angezeigt werden, und mit der Warnung 'Ein auf diesem Computer ausgeführtes Programm versucht, eine Nachricht anzuzeigen 'und ermöglicht das Anzeigen oder Ignorieren der Nachricht.
Microsoft hat ein WhitePaper zu diesem Thema, das Sie hier herunterladen können
Ich würde auch vermuten, dass ein weiterer geringfügiger Grund darin besteht, dass das Feature missbraucht / missverstanden wurde und zu schlechten Designs führte. Ich hatte zum Beispiel einen alten Server mit einem Drittanbieter-Service, der einige Benachrichtigungen / Fehler über ein Meldungsfeld anzeigte, anstatt in das Ereignisprotokoll zu schreiben. Ich habe mich jedoch nie lokal und selten im Administratormodus angemeldet und daher die Nachrichten nicht angezeigt.
Früher waren interaktive Dienste möglich , aber das Dienstmodell ist das eines Prozesses, der unabhängig von einem Benutzer ausgeführt wird. Sie sollen unbeaufsichtigt ausgeführt werden und sollten daher keine GUI benötigen.
Interaktive Dienste sind seit Windows Vista nicht mehr verfügbar und sollten daher nicht mehr verwendet werden.
Wenn Sie mit dem Dienst interagieren müssen, empfiehlt die Seite, auf die ich verlinkt habe, die Erstellung einer separaten GUI-Anwendung, die mit dem Dienst über IPC (Interprocess Communication) kommuniziert, z. B. Named Pipes.
quelle
Weil Dienste im Hintergrund ausgeführt werden sollen, ohne mit dem Benutzer zu interagieren. Sie können tatsächlich ausgeführt werden, solange kein Benutzer angemeldet ist.
quelle
Ja, es war möglich und es hat funktioniert. Beim Einloggen haben Sie die Oberfläche der Anwendung erhalten. Es war sehr nützlich für ältere Anwendungen, die keinen Dienst zur Verfügung haben, aber dennoch auf dem Server ausgeführt werden müssen. Es war jedoch nicht die stabilste Lösung. Es wurde als der Benutzer ausgeführt, der darauf klicken oder sich abmelden konnte. Das war nicht sehr nett.
Jetzt entwickelt jeder native Dienste und fügt eine Anwendung oder ein Protokoll hinzu, um den Dienst zu verwalten. Das ist ein gutes Entwurfsmuster und wird jetzt die meiste Zeit verwendet.
Sehen Sie es eher als Vermächtnis, dass es möglich war.
quelle
Die Dienste sind für unbeaufsichtigte Vorgänge gedacht, hauptsächlich im Hintergrund. Der Namensdienst selbst fungiert als Server für einige Clientanwendungen oder andere Dienste, die diesen Dienst in Anspruch nehmen. Daher möchten MS möglicherweise jetzt die Grundlagen einhalten und eine klare Unterscheidung zwischen Diensten und Apps treffen. Apps beschäftigen die Benutzer und lassen Dienste ihren Zweck stillschweigend erfüllen. Während Nagelschneider gibt es, warum für Küchenmesser gehen, um Nils zu schneiden?
quelle