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.