WinForm——记住密码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
namespace LoginAdmin
{
class RWini
{
private string Path;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,string key,string val,string path);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key, string def, StringBuilder retVal, int size, string Path);
/// <summary>
/// 构造函数
/// </summary>
/// <param name="INIPath"></param>
public RWini(string INIPath)
{
Path=INIPath;
}
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <param name="value"></param>
public void WriteInivalue(string Section, string Key, string value)
{
File.SetAttributes(this.Path, FileAttributes.Normal);
WritePrivateProfileString(Section, Key, value, this.Path);
File.SetAttributes(this.Path, FileAttributes.ReadOnly);
}
/// <summary>
/// 读取INI文件
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <returns></returns>
public string ReadInivalue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(1024);
int i = GetPrivateProfileString(Section, Key, "读取错误", temp, 1024, this.Path);
return temp.ToString();
}
}
}
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Win32;
namespace LoginAdmin
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ReadINI();
Roles();
MessageBox.Show(textBox1.Text);
}
private void Roles()
{
//文件操作读取-------StreamReader
string filepath = "..\\..\\Roles.txt";
StreamReader sr = new StreamReader(filepath, Encoding.Unicode);
//string content = sr.ReadToEnd();//返回string
string content = sr.ReadLine();
sr.Close();
string[] arry = content.Split('\t');
for (int i = 0; i < arry.Length; i++)
{
comboBox1.Items.Add(arry[i]);
}
}
/// <summary>
/// 写入INI
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
string name = textBox1.Text;
string password = textBox2.Text;
string path = @"..\\..\\set.ini";
RWini ini = new RWini(path);
ini.WriteInivalue("mysystem", "username", name);
}
}
/// <summary>
/// 读取ini
/// </summary>
private void ReadINI()
{
string path = Path.GetFullPath(@"..\\..\\set.ini");
RWini ini = new RWini(path);
textBox1.Text = ini.ReadInivalue("mysystem", "username");
}
}
}
方法二:注册表
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Win32;
namespace LoginAdmin
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Roles();
HasRemember();
}
private void button1_Click(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
string name = textBox1.Text;
string password = textBox2.Text;
Remember(true, name, password);
}
}
/// <summary>
/// 根据传入值记住密码
/// </summary>
/// <param name="remember">是否记录</param>
/// <param name="userName">用户名</param>
/// <param name="password">密码</param>
private void Remember(bool remember,string userName,string password)
{
try{
RegistryKey key=Registry.LocalMachine.OpenSubKey("SOFTWARE",true);
key=key.CreateSubKey("CheckManage",RegistryKeyPermissionCheck.Default);
if(remember)
{
key.SetValue("username",userName);
key.SetValue("password",password);
}
else
{
if(key.GetValue("username")!=null) key.DeleteValue("username");
if(key.GetValue("password")!=null) key.DeleteValue("password");
}
}
catch
{
}
}
/// <summary>
/// 判断是否记住密码
/// </summary>
/// <returns></returns>
private bool HasRemember()
{
try
{
RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\CheckManage", true);
object objU = key.GetValue("username");
if (objU != null)
{
this.textBox1.Text = objU.ToString();
}
object objP = key.GetValue("password");
if (objP != null) this.textBox2.Text = objP.ToString();
return objU != null && objP != null;
}
catch
{
return false;
}
}
private void Roles()
{
//文件操作读取-------StreamReader
string filepath = "..\\..\\Roles.txt";
StreamReader sr = new StreamReader(filepath, Encoding.Unicode);
//string content = sr.ReadToEnd();//返回string
string content = sr.ReadLine();
sr.Close();
string[] arry = content.Split('\t');
for (int i = 0; i < arry.Length; i++)
{
comboBox1.Items.Add(arry[i]);
}
}
}
}
总结:
方法一:写入数据库
方法二:写入文件——txt、xml、ini
方法三:注册表
WinForm——记住密码的更多相关文章
- winform 记住密码功能
//登录 private void btn_Login_Click(object sender, EventArgs e) { //记住密码 ...
- C# winform 记住密码实现代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- WinForm应用程序的开机自启、记住密码,自动登录的实现
一.思路: 1.开机自启,自然是需要用到注册表,我们需要把程序添加到电脑的注册表中去 2.记住密码,自动登录,开机自启,在页面的呈现我们都使用复选框按钮来呈现 3.数据持久化,不能是数据库,可以是sq ...
- java实现记住密码功能(利用cookie)
<br> <input type="text" id="userName" name="userName" value=& ...
- 记住密码超简单实现(C#)
实现效果如下 实现过程 [Serializable] class User { //记住密码 private string loginID; public string LoginID { get { ...
- cookie实现记住密码
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 通过sharedpreferences实现记住密码功能
通过sharedpreferences实现记住密码功能
- MiniTwitter记住密码等功能实现
一.SharedPreferences的用法:(相关实现功能的只是了解) 由于SharedPreferences是一个接口,而且在这个接口里没有提供写入数据和读取数据的能力.但它是通过其Editor接 ...
- jquery.cookie.js 操作cookie实现记住密码功能的实现代码
jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下. 复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...
随机推荐
- 在octave语言中K-means聚类算法求聚类中心的向量化计算
使用octave编程的时候,一定要注意使用向量化编程的思想,下面我就说说我今天做题遇到的一个K-means聚类问题,如何使用octave中的函数向量计算聚类中心centroids. octave几个函 ...
- iOS开发 missing iOS distribution signing identity for 。。。
苹果真是不让人省心,新年一来上传APP,就出现Missing iOS Distribution signing indetity for xxx 于是就把证书删了做,做了删了再重做,还是不行 百度了一 ...
- Javascript 页面刷新
Javascript 页面刷新的实现代码收藏 1 2 3 4 5 6 7 8 history.go(0) location.reload() location=location location.as ...
- 实现基本TCP套接字客户端
//实现基本TCP套接字客户端var net = require('net');function getConnection(connName){ var client = net.connect({ ...
- &简单使用记录
最近阅读juce代码发现有很多&的用法,例如:(array.size() & 1 == 0) 的判断,仔细分析了下和1做与 操作是为了判断低位是否为0或者1,直观的说就是判断左值的奇偶 ...
- pip安装icu失败:Command "python setup.py egg_info" failed with error code 1 in
问题 Mac 下通过 pip 安装 icu 失败. 解决办法及原因 问题的原因是因为icu库中的某一行代码找不到一个文件,获取不到ICU_VERSION的值. # Install icu brew i ...
- jade的特点
jade特点 1超强的可读性 2灵活易用的缩进 3块扩展 4代码默认进过编码处理,以增强安全性 5编译及运行时的上下文错误报告 6命令行编译支持 7html5模式(使用 !!!5文档类型) 8可选的内 ...
- TFS2013 升级至TFS2015及项目的创建
TFS2015已发布想体验下新特性 由于现有数据库已经是SQLSERVER2012 SP1 开发工具VS2013 都符合升级要求 现在体验下吧 1.先下载TFS2015 运行安装向导一路NEXT 直至 ...
- 洛谷 P1359 租用游艇
题目描述 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,-,n.游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇.游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1& ...
- Grunt构建工具插件篇——之less工具3和watch配合自动化编译
grunt less转换成css速度慢 而且页面会全部刷新? 最近遇到了个问题,grunt里用less,当修改完.less里面的样式,对应 的.css文件会好几秒才修改,然后浏览器上显示也会耗时好几秒 ...