Dein Dienst funktioniert unter Windows XP nur zufällig. Er wird schon bei Terminals versagen, da dann der Dienst in einer anderen Session läuft als Winlogon. Und darum geht es in Vista. In Vista laufen Dienste in Session 0 und der Winlogonprozess in 1 und größer.
D.h. wenn du eine Nachricht anzeigen willst, dann musst du einen neuen Prozess in die Session erzeugen, welcher die Nachricht anzeigt. Andere Möglichkeit gibt es nicht.
Dasselbe gilt natürlich für XP, wenn z.B. per RemoteDesktop eingeloggt wird.
Vista:
1. Winlogon Notification Packages werden ignoriert
2.
GINA wird ignoriert
3. Dienste können keine Nachrichten auf dem Benutzerdesktop anzeigen, auch wenn man in den Diensteinstellungen das Häckchen setzen kann. Aus Kompatibilitätsgründe kann der Desktop noch umgeschalten werden, das muss aber in Zukunft von MS nicht mehr unterstützt werden.