zoukankan      html  css  js  c++  java
  • 编程实现Windows系统自动登录

    编程实现Windows系统自动登录

    原理

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

    方法

    注册表项:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon

    键值:

    键值 设置值 作用
    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
  • 相关阅读:
    C# Dev PropertyGrid
    C# PropertyGrid控件应用心得
    FileWriter不覆盖
    FileWriter
    java试题
    Java线程池
    java自带线程池和队列详细讲解
    HashMap练习题
    Map集合
    java指定
  • 原文地址:https://www.cnblogs.com/findumars/p/5046195.html
Copyright © 2011-2022 走看看