I've been involved in commercially supporting Windows networks for almost 5 years now, having dealt with a hundreds of users across dozens of different companies. Most of the clients we support are "small businesses", which makes sense, as it is quoted that as 97.3% of private enterprise in NZ is small/medium sized, accounting for 49.4% of private sector employment.
These companies, in the most part, don't have the infrastructure for a large, homogeneous IT environment.
And you know what? They couldn't care less.
They make do with what they always have - buying PCs piecemeal, having Office 2000 on some PCs and Office 2003 on others, and - the kicker - knowing everyone else's passwords, instead of sharing data. Even though products like Microsoft Exchange allow you to do things like delegate access to someone else's mailbox, they still claim they need to all have their passwords set to 'password', or documented in a book, in case they need to sit at someone else's PC.
People don't do what PCs suggest they should do. No one really wants the multi user functionality that PCs have now. In small business, people want to be able to use the line-of-business application, a web browser, and access their own e-mail and files. They might like the idea of having some personalisation (some care for it, some don't), but overall, having to log out as you and log in as me takes longer than the effort required just to use the application as set up on your profile.
So, as a sysadmin, I want people to use strong passwords. I have to wean them off the idea of needing someone else's password to get at their data. And I want to work how they work, not how I think they want to. They want the desktop you use when you're filling in for someone to look like it did when they were learning over the first person's shoulder.
The primary solution put forward by Microsoft is "roaming profiles", where you can log into any machine, and have your applications loaded. Say you've got a shortcut to Word 2003 on your desktop, and you roam that profile to a machine with Word 2000 on it. Doesn't work. Good for volume licensed customers with the same software on all PCs, but not good for us. Doubly bad when you look at how people actually work - the accounts clerk has MYOB and payroll software installed, some managers will have banking software for authorising transactions, sales people may have a line-of-business application that analysts don't need, etc. It's not worth ensuring that the software is on everyone's machine, it means unnecessary licensing costs, and in the case of things like payroll software, people want to know it's not available to everyone.
So, roaming profiles are out.
When someone is away, their mail and phone are diverted, but their PC sits there unused, or someone has to sit at the desk - they try and find the icons you used to click, but their new profile doesn't have the shortcuts, or the per-user registry keys required for some random application.
Let's look at some other possible solutions:
Terminal services or Citrix MetaFrame
Put everyone on a thin client and make everyone use a central server. Good plan, large investment required, takes a lot of time to change from an office of fat-clients to a thin-client environment, and not all SME apps are TS friendly. Also, if you scale to needing more than one TS, then you're back at square 1 with needing the apps to be in synch across two machines.
Virtual machinery
Abstract the access away from the machine - have a bunch of passwords all able to unlock the same machine. Wasteful.
Change someones password temporarily if you need to use their account
Tried this. At present, there is no way for the Administrator to change someone's password, store the original hash, and set it back at a later date. I think it's worth implementing though.
Cheat biometrics
Biometric sensors, like the fingerprint scanner on my T60 laptop, can be 'cheated': in an office of 10 people, with 10 fingerprints able to be stored, why not store everyone's fingerprint on everyone's computer? Requires buying a scanner for everyone's PC.
Insecure machine accounts, delegated access to data
Why not have everyone have a 20 character password, but have a single password for logging into the machine in the morning? You could have a "machine user" account on each machine, and delegate e-mail access for everyone necessary to the machine. A bit more administrative overhead but a possible solution.
Craig's "Silver Bullet" answer
My favourite suggestion is delegating access to your profile, or your profile/PC combination. This is what Exchange lets you do now with e-mail - why not extend this to user accounts also? Presumably, the component (a "GINA") that that handles authentication for the fingerprint reader, could be made to start loading another account, separate from the one you entered the password for?
Therefore, we can have a 1:1 mapping of people to passwords, so no-one ever has to know anyone else's, and then we can have a 1:many between computers and users, without needing messy multiple profiles.
Anyone see any problems with this approach? If not, why haven't you written it yet? Look perhaps at pGina as a base. My (ex-)small businesses will pay.
Ironically, Kerberos has delegation stuff already built in, it's just that nobody uses it. I guess since Active Directory is based in part on Kerberos, this shouldn't be too hard to do, if the appropriate bits of the logon process can be mangled. I would imagine that Exchange probably makes use of the faculty already.
I was reading your "silver bullet" answer and that is something I have been wishing we were able to do for a long time. It would make doing tech. support for users so much easer. Usually users will leave while I work on their PCs and there are many times that their issue deals with something in their user profile which requires me to login as them. It would be sweet if the domain administrator could login to a PC as a user but use their own password instead of the user's password. This kind of thing could also help with the solution you talked about if you could grant certain users access to login to other user's profiles without that user needing to give out his/her password. There should probably be some kind of an audit trail showing what user actually logged into the PC using the other user's profile.