October 02, 2006
Automatically Lock a Windows Session after Automatic Login
Windows Tip: Locking a desktop at logon
Mitch Tulloch, MTIT Enterprises
Recently an ITworld reader contacted me with an interesting question: Can you configure Windows XP so that it logs on automatically but into a locked state? In other words, if the AutoAdminLogon registry value found at HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon has been set to 1 and the DefaultUserName and DefaultPassword values have been configured appropriately, is it possible to make Windows lock the desktop immediately after automatic logon occurs?
The XP machine under consideration runs a scheduled task at night that copies data collected on the machine to another machine on the network. Unfortunately, to perform its work properly the machine has to automatically log on using admin credentials, but during the day this is not a problem as the user can simply lock the workstation when he has to leave the machine. But at night what happens is that whenever new security updates become available on the Windows Update website, the machine automatically downloads and installs these updates and reboots. Then the machine starts up, automatically logs on using admin creds, and the desktop appears. Anyone with physical access to the machine now has admin privileges on it, which is not good. Configuring a password-protected screen saver will help, but it still leaves a window of opportunity since an unrealistically short screen saver setting of 1 minute makes it frustrating to work on the machine during the day.
Unfortunately you can't configure Windows autologon to log on into a locked state, but a short script may provide a workaround for this situation. Simply open Notepad and copy and paste the following lines into it:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "rundll32.exe user32.dll,LockWorkStation",1,false
Save the file as lock.vbs (not lock.vbs.txt) on your desktop and test it by double-clicking on this script. What should happen is that in about 30 seconds your machine should lock. If this works, copy lock.vbs into the Startup folder on your Start menu. Now reboot your machine and log on (or autologon) and about 30 seconds after logging on your machine should lock. This is totally independent of your screen saver timeout, and uses rundll32.exe to call out the LockWorkStation function from user32.dll.
The reason for using 30 seconds (30000 in the first line of the script) is to give the desktop time to settle before automatically locking the workstation. Once you can confirm that this works, you can then experiment by lowering this time value if you want to reduce the window for your desktop being exposed before automatically locking it. You may even be able to use a value of 0 to lock the desktop immediately after logon, but it's best to try changing the value gradually in stages and of course doing so on a test machine before you try it on a production one, just in case it causes problems of some sort.