Unter Vista wirst du in deinem Service die Message für das Herunterfahren und "Neu Starten" nicht abfangen können, denke ich. Es kann natürlich sein, daß Systemnachrichten auf alle Desktops geschickt werden,
da ja auch der Service beendet werden muss. Ich weiss nicht ob es auch für die Service unter Vista noch so läuft.
Das hab ich noch nicht geprüft.
Ich weiss nur das man von einer Applikation zu einem Service keine Window-Messages unter Vista schicken kann, wegen den getrennten Desktops.
Sollten Systemnachrichten auch in diesem Service-Desktop verfügbar sein, musst du in deinem Service nur ein nicht sichtbares Fenster erzeugen und kannst eine WndProc benutzen.
Sollten diese Window-Messages nicht im Service-Desktop verfügbar sein, musst du eine Appliaktion haben die im User Desktop erstellt wird, dort die Window-Message abfängt und zB. über
TCP an den Service eine Nachricht schickt á la "Hab Nachricht herunterfahren erhalten".