Da fehlt wieder Grundwissen. Ein Dienst läuft im Kontext des Systemkontos und natürlich nicht im Kontex irgendeines angemeldeten Benutzers, denn genau deswegen ist es ja ein Dienst.
Man könnte jetzt versuchen herauszufinden, ob eibn Benutzer angemeldet ist. Aber auch das ist problematisch, ja mehr als ein Benutzer angeneldet sein kann. Welchen Benutzer hätten wir dann gerne?
Wenn ein Programm benutzerspezifische Aufgaben erledigen soll, dann muss es auch im Kontext des jeweiligen Benutzers laufen, um Zugriff auf die benötigten Ressourcen zu haben. Du musst also eine ganz einfache Benutzeranwendung schreiben, die eben ausgeführt wird, wenn sich ein Benutzer anmeldet, also Autorun des betreffenden Benutzers liegt.
Richtig unter Vista gibt es keine aktiven Diesnte mehr, aus Sicherheitsgründen, da eine direkte Interaktion aus dem Benutzerkontext mit einem Dienst im Systemkontext bedeutet, dass die Anweisungen im Systemkontext, also mit erhöhten Rechten ausgeführt wird. Und dies bedeutet natürlich eine Sicherheitslücke. Microsoft empfiehlt, daher auch unter anderen Systemen keine Interaktivendienste zu implenmetieren.