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

编程实现Windows系统自动登录

2015-12-14 18:56 441 查看

编程实现Windows系统自动登录

原理

通过注册表修改实现。Windows内置了自动登录的机制,在登录系统时,winlogon会检查注册表下有没有设置自动登录,如果设置了就上就会读取用户名和密码,然后进行验证,通过后就登录进系统了。

方法

注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

键值:

键值设置值作用
AutoAdminLogon1;1表示自动登录,0表示禁止自动登录
DefaultDomainName设置值域名,如果没有就留空
DefaultUserNameabc登录系统用的用户名
DefaultPassword123登录系统用的用户名使用的密码,如果想加密保存就删除此键值
DontDisplayLastUserName1
注意,下面两个键值必须删除掉,否则会显示一个通知对话框。

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] 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: