C# winform 软件注册

转载 2012年03月21日 14:23:26

 SoftReg类:

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;
         }
     }
 }


注册窗体:

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();
         }
     }
 }


主窗体:

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();
                }
            }
        }
    }
}


 

c# winform实现dll加载时注册

近期遇到一个纠结的问题:在运行winform时,由于使用了一个他人开发的dll动态链接库,而这个库是必须要在本地电脑注册以后才可以使用,当然,我的电脑是注册了的,而开发的程序使用者电脑……于是…… ...
  • lcawen
  • lcawen
  • 2013年01月08日 17:16
  • 1639

C#/winform 腾讯QQ注册

今日不知为何,总有点感慨人生。做了程序猿已经差不多快2年了,除了工作上的软件之外,貌似从来没为自己做过什么实用的软件,比如一些快捷的工具等等。感觉着编程技术在工作上确实很难学到。特别是国内的公司,尽管...

C#Winform三层结构的登录注册程序

  • 2012年07月18日 18:26
  • 4.78MB
  • 下载

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口 实现热键功能 这里需要使用WindowsAPI 注册热键:RegisterHotKey 该函数定义一个系统范围的热...

C#商业软件注册处理

开发软件时,当用到商业用途时,注册码与激活码就显得很重要了。现在的软件破解技术实在在强了,各种国内外大型软件都有注册机制,但同时也不断地被破解。下面发的只是一个常用版本,发出源码被破就更容易了,但我们...

C# 生成软件注册码

C# 生成软件注册码今天早上,花了一个早上弄了个生成机器码和注册码的Demo,通过生成的注册码里面包含时间信息,保证了注册码在使用后的指定时间后失效由于数学不行所以写的比较简单,ok 上代码吧 产生机...

C#实现软件注册码算法

Microsoft.Net的应用程序的代码文件,与Java生成的文件类似,它们都没有本地代码,而是一种类似于汇编的代码。这样,只要有合适的工具,就可以完整的把别人写出来的程序反编译成自己需要的程序文件...
  • cuoban
  • cuoban
  • 2016年01月25日 16:59
  • 987

C# 软件注册功能

http://www.cnblogs.com/ynbt/archive/2011/11/02/2233470.html   1 using System; 2 using System.Coll...
  • wensibo
  • wensibo
  • 2012年01月13日 12:16
  • 3690

c# WinForm 窗体美化(二)--关于东日skinbuilder软件生成皮肤的使用

1、下载东日skinBuilder软件 1)IrisSkin(包括范例、东日skin皮肤、skinBuilder软件) NET(Winforms) 方案(面向 Microsoft VisualSt...

C# winform 编写一键排班软件遇到的程序问题

下面咱们看图说话:     1.规范输入。系统默认应输入“星期X”,如果用户输入特殊字符@#¥%!或其他字符,在这里会给个提醒,同时限制只能输入三个字符  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# winform 软件注册
举报原因:
原因补充:

(最多只允许输入30个字)