Die Meldung, dass der Dienst angehalten wurde kommt daher, dass deine Execute Methode ja sofort wieder beendet wird. Die Methode ist genau dieselbe, wie eine Threadmethode. Der Thread wird zerstört sobald die End; Zeile abgearbeitet wurde.
Man kann eine Nachrichtenbox ausgeben lassen, indem man MessageBox der
WinAPI verwendet und MB_SERVICENOTIFICATION verwendet. Oder man macht es eben über ein extra Programm. Jedoch ist ab XP und Win2003 das Problem, welcher Benutzer die Nachricht sehen soll. Schließlich können mehrere Benutzer gleichzeitig eingeloggt sein, siehe Terminal Services.
Wenn du deinen Dienst unter einem normalen Benutzer laufen lässt, dann ist das ok, sofern der Benutzer kein Administrator ist. Das verhindert, dass Fehler in deinem Programm, es anderen Benutzern ermöglicht Dinge zu machen, die sie eigentlich nicht dürften.
Du solltest daher die Ausführung unter dem Dienst Konto verweigern (GetUserName = 'SYSTEM').