Windows系统新安装的时候是没有设置自动登录账户的,即使win7/xp系统能够自动登录到无密码的账户中,也不是真正的“自动登录”概念。
设置了自动登录后,HKLM\Software\Microsoft\Windows NT\winlogon目录下有一个AutoAdminLogon=1的字段,标明了这个,DefaultUserName字段则记录了设置自动登录的账户名。
如果设置了自动登录账户,但是设置“错了”,比如给winxp新创建了一个owner管理员用户,但将其设置为自动登录账户时选择的却是系统默认的administrator账户,那么系统在登录时会提示无法自动登录。
因为系统默认是登录到的owner账户,administrator账户在登录界面是看不见的,所以登录会失败(解释略带牵强,具体原因可以自己去探索下)。
比较尴尬的是,如果你写了一个后台服务,在登录前会调用ExitWindowsEx进行关机,那么关机操作会被这个“登录消息”对话框给拦截,导致无法关机。
到底怎么判断系统能否自动进入桌面了,这里当然包括比如win7系统的无密码登录,以及有密码时设置自动登录的情况。(至少不能像网上说的直接通过autoadminlongon是否为1来简单判断)
提供一个方法供参考:
1、如果存在autoadminlogon=1段,读取同级注册表目录下DefaultUserName字段,如果DefaultUserName的值同当前登录的账户,那么可以断定存在自动登录账户,且就是当前账户。
2、如果不存在autoadminlogon字段,则通过NetUserEnum获取系统所有用户列表,当用户数只有一个,且其密码为空的时候,系统是可以自动登录的。
3、其他情况,暂时还没有时间去发现,有兴趣的可以交流一下。
如有错误,欢迎交流。