Monitors users activity in Windows Terminal Services

I have been asked to monitor terminal server sessions by user name. They want to see total time logged on, total idle time, as well as applications used if possible. Is there a way to monitor this in Windows 2000 or 2003 terminal services?
theedgeheadAsked:
Who is Participating?
 
Rob WilliamsCommented:
There may be, but afaid I don't know of one.
I have used an application called Desktop Scout, though not on a terminal server. It logs an incredible amout of information such as applications used, how long, documents accessed, even what was done within some applications such as editing an invoice. If you wanted to have a look:
http://www.globalpatrol.net/desktopscout/
Demo version has very limited testing abillities.
0
 
Rob WilliamsCommented:
Some of this you can monitor with the followin (copy from an earlier post of mine):

You can enable detailed auditing and within the configuration, you can configure the systems and successful and/or failed events you wish to audit. Following articles outline how to enable and analyze the results:
http://support.microsoft.com/kb/814595/
http://www.windowsecurity.com/articles/Understanding_Windows_Logging.html
http://207.46.19.60/technet/prodtechnol/windows2000serv/maintain/monitor/logevnts.mspx

However using auditing can be time consuming to filter and extract.

Another option is to add the lines below to each users logon script to create a log file. It would give you UserName, ComputerName, date and time, in a simple single line, followed by the IP from which they connected, if needed. If you wish to know logoff times as well, you can add the same lines to a log off script in group policy (if you don't already have one: User Configuration | Windows settings | Scripts | Logoff). You likely won’t need the last line (IP address) in the log off script.

As written below it will create the log/text file in \\Server\Logs\LogOns.Log and the entries will look like:
Log File

Log On:  jdoe SERVER1  Tue 1/1/2007   9:01
  TCP    10.0.1.100:3389        66.66.123.123:1234        ESTABLISHED
 
Log Off: jdoe SERVER1  Tue 1/1/2007   9:31

Log On:  jsmith SERVER2  Tue 1/1/2007   9:01
  TCP    10.0.1.200:3389        66.66.123.124:1234        ESTABLISHED
 
Log Off: jsmith SERVER1  Tue 1/1/2007   9:31
---------------------------------------------------------------------------

:Logging
If Exist "\\Server\Logs\LogOns.Log" GoTo START
Echo Log File > "\\Server\Logs\LogOns.Log"
:START
Echo. >> "\\Server\Logs\LogOns.Log"
Echo Log On:  %USERNAME% %COMPUTERNAME%  %Date:~0,16%  %Time:~0,5% >> "\\\Server\Logs\LogOns.Log"
netstat  -an  |find  "3389"  |find  /I  "established"  >> "\\Server\Logs\LogOns.Log"

---------------------------------------------------------------------------
Note the users will need to have read/write and execute permissions for the \\Server\Logs\LogOns.Log  file.
0
 
theedgeheadAuthor Commented:
That will give me logged on times but I also need idle time and applications used. I can use the query command to get idle time and apps used by doing query process, query session and query user every five or 10 minutes and output that to a text file. The problem is I then have to figure a way to get that into a usable report. I'm looking at scripting a way to parse these text files to get a report of some kind but was hoping there was an easier way.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.