• C#(WinForm)实现软件注册


    C#(WinForm)实现软件注册

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Management;
    
    namespace SoftRegister
    {
    class SoftReg
    {
    ///<summary>
    /// 获取硬盘卷标号
    ///</summary>
    ///<returns></returns>
    public string GetDiskVolumeSerialNumber()
    {
    ManagementClass mc = new ManagementClass("win32_NetworkAdapterConfiguration");
    ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid="c:"");
    disk.Get();
    return disk.GetPropertyValue("VolumeSerialNumber").ToString();
    }
    
    ///<summary>
    /// 获取CPU序列号
    ///</summary>
    ///<returns></returns>
    public string GetCpu()
    {
    string strCpu = null;
    ManagementClass myCpu = new ManagementClass("win32_Processor");
    ManagementObjectCollection myCpuCollection = myCpu.GetInstances();
    foreach (ManagementObject myObject in myCpuCollection)
    {
    strCpu = myObject.Properties["Processorid"].Value.ToString();
    }
    return strCpu;
    }
    
    ///<summary>
    /// 生成机器码
    ///</summary>
    ///<returns></returns>
    public string GetMNum()
    {
    string strNum = GetCpu()+GetDiskVolumeSerialNumber();
    string strMNum = strNum.Substring(0,24); //截取前24位作为机器码
    return strMNum;
    }
    
    public int[] intCode = new int[127]; //存储密钥
    public char[] charCode = new char[25]; //存储ASCII码
    public int[] intNumber = new int[25]; //存储ASCII码值
    
    //初始化密钥
    public void SetIntCode()
    {
    for (int i = 1; i < intCode.Length; i++)
    {
    intCode[i] = i % 9;
    }
    }
    
    ///<summary>
    /// 生成注册码
    ///</summary>
    ///<returns></returns>
    public string GetRNum()
    {
    SetIntCode();
    string strMNum = GetMNum();
    for (int i = 1; i < charCode.Length; i++) //存储机器码
    {
    charCode[i] =Convert.ToChar(strMNum.Substring(i - 1, 1));
    }
    for (int j = 1; j < intNumber.Length; j++) //改变ASCII码值
    {
    intNumber[j] = Convert.ToInt32(charCode[j]) + intCode[Convert.ToInt32(charCode[j])];
    }
    string strAsciiName = ""; //注册码
    for (int k = 1; k < intNumber.Length; k++) //生成注册码
    {
    
    if ((intNumber[k] >= 48 && intNumber[k] <= 57) || (intNumber[k] >= 65 && intNumber[k]
    <= 90) || (intNumber[k] >= 97 && intNumber[k] <= 122)) //判断如果在0-9、A-Z、a-z之间
    {
    strAsciiName += Convert.ToChar(intNumber[k]).ToString();
    }
    else if (intNumber[k] > 122) //判断如果大于z
    {
    strAsciiName += Convert.ToChar(intNumber[k] - 10).ToString();
    }
    else
    {
    strAsciiName+=Convert.ToChar(intNumber[k]-9).ToString();
    }
    }
    return strAsciiName;
    }
    }
    }
    
    View Code
    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 Microsoft.Win32;
    
    namespace SoftRegister
    {
    public partial class frmRegisterForm : Form
    {
    public frmRegisterForm()
    {
    InitializeComponent();
    }
    public static bool state = true; //软件是否为可用状态
    SoftReg softReg = new SoftReg();
    private void btnClose_Click(object sender, EventArgs e)
    {
    if (state == true)
    {
    this.Close();
    }
    else
    {
    Application.Exit();
    }
    }
    
    private void btnReg_Click(object sender, EventArgs e)
    {
    try
    {
    if (txtRNum.Text == softReg.GetRNum())
    {
    MessageBox.Show("注册成功!重启软件后生效!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
    RegistryKey retkey = Registry.CurrentUser.OpenSubKey("Software", true).CreateSubKey("wxf").CreateSubKey("wxf.INI").CreateSubKey(txtRNum.Text);
    retkey.SetValue("UserName", "Rsoft");
    this.Close();
    }
    else
    {
    MessageBox.Show("注册码错误!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    txtRNum.SelectAll();
    }
    }
    catch (Exception ex)
    {
    throw new Exception(ex.Message);
    }
    }
    
    private void frmRegisterForm_Load(object sender, EventArgs e)
    {
    this.txtMNum.Text = softReg.GetMNum();
    }
    }
    }
    
    View Code
    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 Microsoft.Win32;
    namespace SoftRegister
    {
    public partial class frmMainForm : Form
    {
    public frmMainForm()
    {
    InitializeComponent();
    }
    SoftReg softReg = new SoftReg();
    private void btnClose_Click(object sender, EventArgs e)
    {
    Application.Exit();
    }
    private void btnReg_Click(object sender, EventArgs e)
    {
    frmRegisterForm frmRegister = new frmRegisterForm();
    frmRegister.ShowDialog();
    }
    ///<summary>
    /// 窗体加载
    ///</summary>
    ///<param name="sender"></param>
    ///<param name="e"></param>
    private void frmMainForm_Load(object sender, EventArgs e)
    {
    //判断软件是否注册
    RegistryKey retkey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true).CreateSubKey("wxf").CreateSubKey("wxf.INI");
    foreach (string strRNum in retkey.GetSubKeyNames())
    {
    if (strRNum == softReg.GetRNum())
    {
    this.lblRegInfo.Text = "此软件已注册!";
    this.btnReg.Enabled = false;
    return;
    }
    }
    this.Text = "此软件尚未注册!";
    this.btnReg.Enabled = true;
    MessageBox.Show("您现在使用的是试用版,可以免费试用30次!","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
    Int32 tLong;
    try
    {
    tLong= (Int32)Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Angel", "UseTimes", 0);
    MessageBox.Show("您已经使用了" + tLong + "次!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch
    {
    MessageBox.Show("欢迎使用本软件!","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
    Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Angel","UseTimes",0,RegistryValueKind.DWord);
    }
    tLong = (Int32)Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Angel", "UseTimes", 0);
    if (tLong < 30)
    {
    int tTimes = tLong + 1;
    Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Angel", "UseTimes", tTimes);
    }
    else
    {
    DialogResult result = MessageBox.Show("试用次数已到!您是否需要注册?", "信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
    if (result == DialogResult.Yes)
    {
    frmRegisterForm.state = false;
    btnReg_Click(sender, e);
    }
    else
    {
    Application.Exit();
    }
    }
    }
    }
    }
    View Code

    作者:墨明棋妙
    出处:http://www.cnblogs.com/ynbt/
    关于作者:专注于.Net、WCF和移动互联网开发。
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过ynbt_wang@163.com联系我,非常感谢。 。

    http://www.cnblogs.com/ynbt/archive/2011/11/02/2233470.html

  • 相关阅读:
    Centos 卸载 MySQL
    Kafka体系架构、命令、Go案例
    Go 平滑重启(优雅重启)
    etcd集群数据迁移至新集群
    ubuntu 20.04使用TLSv1
    mybatis拦截器对SQL处理,数据权限逻辑控制
    java敏感字查找和替换
    SpringBoot自定义validation验证
    java使用druid解析器解析SQL语句
    国产数据库人大金仓 KingbaseES V8 R2 在 x86_64 Linux 安装过程
  • 原文地址:https://www.cnblogs.com/blogpro/p/11340634.html
Copyright © 2020-2023  润新知