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——记住密码的更多相关文章

  1. winform 记住密码功能

      //登录        private void btn_Login_Click(object sender, EventArgs e)        {            //记住密码    ...

  2. C# winform 记住密码实现代码

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. WinForm应用程序的开机自启、记住密码,自动登录的实现

    一.思路: 1.开机自启,自然是需要用到注册表,我们需要把程序添加到电脑的注册表中去 2.记住密码,自动登录,开机自启,在页面的呈现我们都使用复选框按钮来呈现 3.数据持久化,不能是数据库,可以是sq ...

  4. java实现记住密码功能(利用cookie)

    <br> <input type="text" id="userName" name="userName" value=& ...

  5. 记住密码超简单实现(C#)

    实现效果如下 实现过程 [Serializable] class User { //记住密码 private string loginID; public string LoginID { get { ...

  6. cookie实现记住密码

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. 通过sharedpreferences实现记住密码功能

    通过sharedpreferences实现记住密码功能

  8. MiniTwitter记住密码等功能实现

    一.SharedPreferences的用法:(相关实现功能的只是了解) 由于SharedPreferences是一个接口,而且在这个接口里没有提供写入数据和读取数据的能力.但它是通过其Editor接 ...

  9. jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下.   复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...

随机推荐

  1. c语言 inline函数

    大学在教科书上学习过inline函数,定义为inline函数之后,会省去函数调用的开销,直接嵌套汇编代码,取代函数调用,提高效率. google的google c++ style guide 1.in ...

  2. CodeForces 652D Nested Segments

    离散化+树状数组 先对坐标离散化,把每条线段结尾所在点标1, 询问某条线段内有几条线段的时候,只需询问这段区间的和是多少,询问结束之后再把这条线段尾部所在点标为0 #include<cstdio ...

  3. CodeForces 625A Guest From the Past

    贪心水题 #include <stdio.h> #include <algorithm> #include <string.h> #include <queu ...

  4. HDU 4044 GeoDefense

    树形DP,和背包差不多.dp[now][x]表示now这个节点的子树上,花费为x的时候,获得的最大防御能力(保证敌方HP<=0) #include<cstdio> #include& ...

  5. HTML学习(三)文本格式化

    HTML文本格式化HTML 可定义很多供格式化输出的元素,比如粗体和斜体字.例1:此例演示如何在一个 HTML 文件中对文本进行格式化<html> <body> <b&g ...

  6. 源码解析-knockout源码准备

    准备包括心理和资源两方面. 心理 我看过一句话说,当你用一个框架时,不要忙着看一遍使用教程就开始写项目,先去看看框架原理. 这句话我深以为然.现今前端快速发展,很多前端攻城狮都很茫然:框架更新太快了, ...

  7. leetcode day5

    [242]Valid Anagram: Given two strings s and t, write a function to determine if t is an anagram of s ...

  8. 获取IIS版本

    近日,有一项目要分别获取iis6.0和7.5,然后对进程进行操作~ 研究良久,有以下办法获取iis版本. 代码: DirectoryEntry getEntity = new DirectoryEnt ...

  9. Intel X710网卡VxLAN offload 性能测试

    Intel X710网卡VxLAN offload性能测试 1.  测试环境参数: 交换机:盛科E580 服务器: Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz ...

  10. UVa 10427 - Naughty Sleepy Boys

    题目大意:从1开始往后写数字,构成一个如下的字符串 123456789101112... .求第n位的数字是多少. 找规律,按数字的位数可以构建一个类似杨辉三角的东西,求出第n位是哪个数的第几位即可. ...