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

标签: c#框架设计界面
1852人阅读 评论(0) 收藏 举报
分类:

先来看个效果:

最近在做一外贸进口软件,也同时在完善这个飞鱼软件开发框架,界面使用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
	            }
         
        }



 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:799956次
    • 积分:10135
    • 等级:
    • 排名:第1677名
    • 原创:284篇
    • 转载:32篇
    • 译文:1篇
    • 评论:257条
    我的课程
    博客专栏
    平台
    最新评论