Detectando que el usuario está lejos de la PC con .NET

Tengo una aplicación de escritorio en la que me gustaría saber dos cosas:

¿El usuario está actualmente en la PC? yEl protector de pantalla se está ejecutando en este momento, por lo que puedo realizar más trabajo intensivo de CPU durante ese tiempo.

Estoy usando C # /. NET. ¿Cómo sugeriría abordar estas dos tareas?

NOTA: La invocación de WIN32 será tan buena como cualquier solución de código no administrado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta