Wie ermittle ich den aktuellen Windows-Benutzer über einen Windows-Dienst?

Ich schreibe einen Windows-Dienst mit C # .NET 2005. Wie kann ich feststellen, wer der aktuell angemeldete Benutzer ist (falls vorhanden)? Gibt es auch eine Möglichkeit, benachrichtigt zu werden, wenn sich ein Benutzer anmeldet?

Gibt es eine Möglichkeit herauszufinden, wer die Maschine kürzlich verwendet hat?

Ich muss den aktuell angemeldeten Benutzer kennen, damit ich einige Daten für diesen Benutzer zwischenspeichern kann. In einer Unternehmensumgebung gibt es Tausende potenzieller Benutzer, aber es ist nur sinnvoll, Daten für jemanden zwischenzuspeichern, der diesen Computer verwendet.

AKTUALISIEREN:

Diese Lösung funktioniert gut. Siehe auchDieses pinvoke.net Beispiel Diese verwendet die erweiterte Struktur, um auch den Domainnamen abzurufen.

In Kombination verwende ich die SystemEvents-Klasse, um benachrichtigt zu werden, wenn sich ein Benutzer am Computer anmeldet. SehenBeispiel 2 hier Ein gutes Beispiel: Beachten Sie, dass Sie ein verborgenes Formular für einen Dienst verwenden müssen, um SystemEvents für einen Dienst verwenden zu können.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage