Session Arbiter - free tool for imposing time limits on local logons
Hello all, long time lurker here on EduGeek, and for my first post I'd like to share with you a program I've written to deal with a problem we had with multiple logons on our Windows 7 domain.
We have Fast User Switching enabled to allow people to share workstations without sharing login details, but I found that we would end up with stale logons where someone would switch user, then the original user would forget they didn't log off. The logon would then sit there for weeks on end, consuming resources and preventing Windows Update from automatically restarting after updates were applied. I thought about having a scheduled restart in the evenings or weekends, but that would annoy the few people who lock their workstation at night instead of logging off (me included), when I really only cared about the forgotten logons in the background.
Looking around in Group Policy, I found that Remote Desktop Services allows you to automatically log off unused sessions after a set time has elapsed, but even though FUS is based on RDS, the limits don't apply to workstations.
So, I wrote a program to make them apply.
Now any session that is in the Disconnected state (i.e. someone else has clicked Switch User) will now be logged off after 18 hours. Logons that are merely locked do not fall into this category, as they are still treated as an active session. The time limit is completely configurable, and you can even use the RDS group policy settings to configure it (just don't install the program on your RDS servers as it might do something horrible, like how putting 'google' in to Google will break the Internet).
I've had this deployed on all our workstations since March with no side-effects, so I'm pretty sure it's stable. Notably, I have also not had a single user complain that their account was logged off without their consent, so I'm pretty sure no-one was leaving their account logged on intentionally. It runs as a service and has an .msi that works for GPO deployment or via SCUP/LUP.
Hope this is of some use to someone!