zoukankan      html  css  js  c++  java
  • 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

    方法三:注册表

  • 相关阅读:
    centos 安装python3.6 简易安装过程
    包装类型
    剑指offer二叉树中和为某一值的路径
    剑指offer 捡绳子
    按位与的技巧
    SpringBoot 登录拦截功能的实现
    AIO实现简单http服务器
    真题-数的分解
    重建二叉树
    旋转数组的最小数字
  • 原文地址:https://www.cnblogs.com/songxm/p/3280787.html
Copyright © 2011-2022 走看看