程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 給軟件登陸窗口增加記住密碼和自動登陸功能

C# 給軟件登陸窗口增加記住密碼和自動登陸功能

編輯:C#入門知識

先來看個效果:

\

最近在做一外貿進口軟件,使用C/S架構開發。為了用戶使用方便,這不嘗試增加記住用戶名密碼的功能,並且可以設置開機自動啟動軟件,一切都是為了減少用戶的點擊操作。

可以有多種方式來保存用戶信息,比如存成本地文件、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
	            }
         
        }



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved