您的位置:首页 > 编程语言 > Go语言

关于windows的自动登录功能--autoadminlogon

2015-06-18 18:00 736 查看
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、其他情况,暂时还没有时间去发现,有兴趣的可以交流一下。

如有错误,欢迎交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: