飞鱼开发框架(一) 给软件登陆窗口增加记住密码和自动登陆功能(图文)

先来看个效果:

最近在做一外贸进口软件,也同时在完善这个飞鱼软件开发框架,界面使用Winform开发。为了用户使用方便,这不尝试增加记住用户名密码的功能,并且可以设置开机自动启动软件,一切都是为了减少用户的点击操作。

可以有多种方式来保存用户信息,比如存成本地文件、xml、注册表、更有甚者存入数据库。个人认为存到数据库里这个操作在没登陆前就发生有些不太好,先去数据库取密码回来放到输入框里等着点击感觉不太好。

 最后采用了注册表的方式来保存这些信息。这里为了演示没有对保存进注册表的密码进行加密,为了安全应该继续对保存的密码加密。

        private void ckbKeepInfo_CheckStateChanged(object sender, EventArgs e)
        {
            RegistryKey location = Registry.LocalMachine;
            RegistryKey soft = location.OpenSubKey("SOFTWARE", true);//可写 
            RegistryKey myPass = soft.CreateSubKey("FTLiang");
            myPass.SetValue("s1", tbUserName.Text);
            myPass.SetValue("s2", tbPassword.Text);
            myPass.SetValue("s3", ckbKeepInfo.Checked);
        }


自动登陆:

       private void ckbAutoStart_CheckStateChanged(object sender, EventArgs e)
        {
            if(ifFistIn == false)
            {
                RegistryKey location = Registry.LocalMachine;
                RegistryKey soft = location.OpenSubKey("SOFTWARE", true);//可写 
                RegistryKey myPass = soft.CreateSubKey("FTLiang");
                myPass.SetValue("s4", ckbAutoStart.Checked);

                if (ckbAutoStart.Checked)
                {
                    string exeDir = Application.ExecutablePath;//要启动的程序绝对路径
                    RegistryKey rk = Registry.LocalMachine;
                    RegistryKey softWare = rk.OpenSubKey("SOFTWARE");
                    RegistryKey microsoft = softWare.OpenSubKey("Microsoft");
                    RegistryKey windows = microsoft.OpenSubKey("Windows");
                    RegistryKey current = windows.OpenSubKey("CurrentVersion");
                    RegistryKey run = current.OpenSubKey(@"Run", true);//这里必须加true就是得到写入权限 
                    run.SetValue("FTStart", exeDir);
                }
                else
                {
                    string exeDir = Application.ExecutablePath;//要启动的程序绝对路径
                    RegistryKey rk = Registry.LocalMachine;
                    RegistryKey softWare = rk.OpenSubKey("SOFTWARE");
                    RegistryKey microsoft = softWare.OpenSubKey("Microsoft");
                    RegistryKey windows = microsoft.OpenSubKey("Windows");
                    RegistryKey current = windows.OpenSubKey("CurrentVersion");
                    RegistryKey run = current.OpenSubKey(@"Run", true);//这里必须加true就是得到写入权限 
                    run.DeleteValue("FTStart");//这里必须加true就是得到写入权限 
                }
            }
        }

初始窗体显示:

        private void FmLogin_Load(object sender, EventArgs e)
        {           

            //从注册表中读取 是否保存了用户名密码 自动启动配置
            try
            {
                RegistryKey location = Registry.LocalMachine;
                RegistryKey soft = location.OpenSubKey("SOFTWARE", false);//可写 
                RegistryKey myPass = soft.OpenSubKey("FTLiang", false);
                tbUserName.Text = myPass.GetValue("s1").ToString();
                string s2 = myPass.GetValue("s2").ToString();
         
                bool ifSave = Convert.ToBoolean(myPass.GetValue("s3"));
                ckbKeepInfo.Checked = ifSave;

                bool ifSave2 = Convert.ToBoolean(myPass.GetValue("s4"));

                ckbAutoStart.Checked = ifSave2;

                if (ifSave)
                {
                    tbPassword.Text = s2;
                }
                else
                {                   
                    tbPassword.Text = "";
                }

                ifFistIn = false;       //程序已启动完毕,可以执行注册表相关动作

            }
            catch (Exception ex) { 
		                  //todo something
	            }
         
        }



 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞鱼通达二开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值