Você pode criar um GPO com scripts de login / logout para acompanhar quando os usuários fazem logon e logoff. Você também pode usar um script do Visual Basic, ou possivelmente até alguns comandos wmic em um arquivo em lotes, para obter as mesmas informações do log de eventos de segurança, que o IIRC obtém eventos adicionados quando os usuários fazem logon e logoff.
Quanto à obtenção de informações sobre a execução de programas, eu nunca fiz isso sozinho, mas dê uma olhada neste artigo do TechNet , que explica como listar os processos em execução em sessões TS e em este outro artigo do TechNet descrevendo como listar as sessões em execução - o último parece que deve incluir nomes de usuários, o que pode evitar o problema de adicionar um GPO ou escrever código digerir o log de segurança.
Da aparência, você pode criar um arquivo de lote contendo
@echo off
date /t >> ts-log.txt
time /t >> ts-log.txt
query session >> ts-log.txt
query process * >> ts-log.txt
echo "" >> ts-log.txt
e crie uma tarefa agendada para executá-la a cada cinco ou dez minutos e tenha tudo que você precisa - embora eu recomende criar outra tarefa para rotacionar esse arquivo de log todos os dias, e talvez manter apenas uma semana ou aproximadamente porque senão é provável que acabe comendo muito espaço muito rápido.
Espero que isso ajude!