Вы можете создать объект групповой политики с помощью сценариев входа / выхода, чтобы отслеживать, когда пользователи входят и выходят из системы. Вы также можете использовать сценарий Visual Basic или, возможно, даже несколько команд wmic в командном файле, чтобы извлечь ту же информацию из журнала событий безопасности, который IIRC добавляет к нему, когда пользователи входят и выходят из системы.
Что касается получения информации о запущенных программах, я никогда не делал это сам, но взглянул на эту статью TechNet, в которой объясняется, как составлять список процессов, выполняемых в сеансах TS, и на другую статью TechNet, в которой описывается, как составлять список запущенных сеансов - последний похоже, он должен включать имена пользователей, что может избавить вас от необходимости добавлять объект групповой политики или писать код для переваривания журнала безопасности.
Судя по всему, вы можете просто создать командный файл, содержащий
@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
и создайте запланированное задание для запуска каждые пять или десять минут и получите все необходимое - хотя я бы порекомендовал создать другое задание для ротации этого файла журнала каждый день или около того, и, возможно, сохранить ценность только недели или около того, потому что в противном случае это может закончиться тем, что вы съедите много места очень быстро.
Надеюсь это поможет!