您的位置:首页 > 其它

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

2013-12-03 08:26 453 查看
先来看个效果:



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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐