编程实现Windows系统自动登录
2015-12-14 18:56
441 查看
编程实现Windows系统自动登录
原理:通过注册表修改实现。Windows内置了自动登录的机制,在登录系统时,winlogon会检查注册表下有没有设置自动登录,如果设置了就上就会读取用户名和密码,然后进行验证,通过后就登录进系统了。
方法:
注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
键值:
键值 | 设置值 | 作用 |
AutoAdminLogon | 1; | 1表示自动登录,0表示禁止自动登录 |
DefaultDomainName | 设置值 | 域名,如果没有就留空 |
DefaultUserName | abc | 登录系统用的用户名 |
DefaultPassword | 123 | 登录系统用的用户名使用的密码,如果想加密保存就删除此键值 |
DontDisplayLastUserName | 1 |
LegalNoticeCaption
LegalNoticeText
另外还有2个键值,作用分别如下:
IgnoreShiftOverride 忽略shift键,默认在开机时按shift机会显示登录对话框(即使设置成自动登录),设置成1后,按shift键也没用了。
AutoLogonCount 设置自动登录次数
ForceAutoLogon 该值要删除掉
特别注意:
由于密码是明文保存的,很不安全,所以windows中提供了一个秘密的地方来保存加密后的密码,就是在lsa中。sysinternals中autologon工具就是把密码保存进去的。 在Winlogon中,它会先到lsa中用找“DefaultPassword”的信息,找到后就用这个密码,如果找不到就到注册表下去找“DefaultPassword”值。
读写lsa的代码,这个代码是pinvoke.net 中找到的。原文: http://www.pinvoke.net/default.aspx/advapi32/DefaultPassword.html
其中C++代码由微软提供:http://msdn.microsoft.com/en-us/library/aa378826(VS.85).aspx
C#代码为:http://www.pinvoke.net/default.aspx/advapi32/LsaRetrievePrivateData.html
获取LUAUtil类后,如下调用即可,
LSAutil lsa = new LSAutil("DefaultPassword"); lsa.SetSecret(“abc”); Console.Write(lsa.GetSecret()); http://www.cnblogs.com/greenerycn/archive/2009/11/18/windows_auto_logon.html[/code]
相关文章推荐
- C语言中位操作,左移右移
- java重量级与轻量级
- c语言中的字节对齐
- python基础一
- 纯代码实现cell嵌套cell
- JAVA 项目获取根目录
- JAVA虚拟机之三:CMS垃圾收集器
- 简单解释SSH框架中Action、Service、Dao、struts、Spring之间的关系
- java sax解析 (这篇真的非常好 易懂适合入门 个人觉得其他类似这种技术层次的博客没有这篇懂得快)
- 【Python真的很强大】多线程的使用
- Qt官方开发环境生成的exe发布方式--使用windeployqt
- Eclipse在Debug时不在指定位置暂停
- win7/win10 64位系统中安装python中有关机器学习对应的包和库
- 远程管理数据库phpMyAdmin部署方案
- PHPCMS V9 按浏览次数排行调用文章
- Spring Bean在BeanFactory生命周期
- Python+Hadoop Streaming实现MapReduce(如何给map和reduce的脚本传递参数)
- struts2的s:iterator标签小计
- proto-lua-gen 转换proto文件错误 Expected top-level statement <e.g ."message">.
- 数据类型的范围