Como determinar o usuário atual do Windows em um serviço do Windows?

Estou escrevendo um serviço do Windows usando o C # .NET 2005. Como posso determinar quem é o usuário atualmente conectado (se houver)? Também existe uma maneira de ser notificado quando um usuário faz logon?

Como alternativa, existe uma maneira de saber quem usou a máquina recentemente?

Preciso conhecer o usuário conectado no momento para que eu possa armazenar em cache alguns dados para esse usuário. Operando em um ambiente corporativo, existem milhares de usuários em potencial, mas só faz sentido armazenar dados em cache para alguém que use essa máquina.

ATUALIZAR:

Esta solução funciona bem. Veja tambémeste exemplo pinvoke.net que usa a estrutura estendida para recuperar também o nome de domínio.

Em combinação com isso, estou usando a classe SystemEvents para ser notificado quando um usuário faz logon na máquina. Vejoexemplo 2 aqui por um bom exemplo - observe que você precisa usar um formulário oculto de um serviço para poder usar o SystemEvents de um serviço.

questionAnswers(2)

yourAnswerToTheQuestion