Nommo was kind enough to point me to his latest blog entry which discusses a troubleshooting case where the Guest account had somehow wound up being the only active administrator account on a Windows Vista computer. This was reasonably easy to reproduce (although I used Windows 7 instead) and, indeed, user management tools don’t work as might be expected.
This is interesting. In most other respects the Guest account still functions as an administrative account. At first I thought I understood exactly why this happened (to do with the way LAN Manager handled security way back in the days of DOS) but a bit of experimentation showed I was wrong. It now looks as though a Guest logon is tagged in some way and prohibited from doing any user management – the Guest account can’t even look up its own details – unless you elevate to it from another account, in which case it has user-level access to account management but not administrator-level. Weird, huh?
Only the actual Guest account is affected; other accounts that are in both Administrators and Guests are not.
Because only account management is blocked, you can get around this in a few ways. Probably the simplest in most cases is to download the psexec tool from Microsoft. Start an elevated command-line window by typing “cmd” into the “Search Programs and Files” box in the Start Menu and pressing Control-Shift-Enter. Then type:
cd /d c:\directory\where\psexec\was\downloaded\to psexec -s \\127.0.0.1 net localgroup Administrators /add myusername
pressing ENTER after each line and changing “myusername” to the username of the other (currently non-administrative) account.
Alternately, you could edit the registry as described in my earlier post but you don’t need to boot from external media:
- Go to the Start Menu and type “regedit” and press ENTER.
- Open HKEY_LOCAL_MACHINE, then SYSTEM, then Setup.
- Double-click on SetupType in the right-hand pane. Enter 2 and press OK.
- Double-click on CmdLine. Enter cmd.exe and press OK.
- Reboot the machine. A command window should appear.
- Type “net localgroup Administrators /add myusername” and press ENTER.
- Type: “exit” and press ENTER.
Again, “myusername” should be replaced with the username of an existing, non-administrative account. After this procedure, the account is administrative. You could also use “net user myusername newpassword” to change the password if necessary. (The same caveat applies as in my previous post: doing this permanently locks you out of any encrypted files in the account.)
Now, obviously Guest shouldn’t be an administrator. The fact that things behave oddly in this situation is not a bug. However, if Guest is an administrator the normal recovery options don’t work properly. In particular you are supposed to be able to log in as Administrator if no usable administrative accounts exist, and in this situation you can’t, and this is a bug.
Hope this helps.