软件注册是商业软件必不可少的模块,在整个程序中启到举足轻重的作用。

系统启动时首先会检测程序是否注册,如果程序没有注册可以使用30次,试用次数完成后将弹出注册界面。程序每次登陆都会将程序使用次数写入到注册表中,程序注册是也会将注册码已加密的方式写入到注册表中。

   public static void RegMetod(bool isDownLoad){try{SoftReg softReg = new SoftReg();//判断软件是否注册RegistryKey retkey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true).CreateSubKey(Encrypt.EncryptDES("mySoftWare", Const.EncryptKey)).CreateSubKey(Encrypt.EncryptDES("Register.INI", Const.EncryptKey));foreach (string strRNum in retkey.GetSubKeyNames()){if (Encrypt.DecryptDES(strRNum, Const.EncryptKey) == softReg.GetRNum()){run(isDownLoad, "正式版", "");return;}}Int32 tLong;try{tLong = (Int32)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\" + Encrypt.EncryptDES("mySoftWare", Const.EncryptKey), "UseTimes", 0);}catch{Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\" + Encrypt.EncryptDES("mySoftWare", Const.EncryptKey), "UseTimes", 0, RegistryValueKind.DWord);}tLong = (Int32)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\" + Encrypt.EncryptDES("mySoftWare", Const.EncryptKey), "UseTimes", 0);if (tLong < 30){int tTimes = tLong + 1;Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\" + Encrypt.EncryptDES("mySoftWare", Const.EncryptKey), "UseTimes", tTimes);int xint = 30 - tTimes;//试用版不提供更新服务run(true, "试用版", xint.ToString());}else{DialogResult result = Comm.MessageBox.YesNo("试用次数已到!您是否需要注册?");if (result == DialogResult.Yes){RegisterForm registerForm = new RegisterForm();registerForm.ShowDialog();}else{Application.Exit();}}}catch (Exception e){Log.Error("程序注册出错!");throw new Exception("程序注册出错:" + e.Message);}}

注册界面:

        #region * 注册private void btnReg_Click(object sender, EventArgs e){if (string.IsNullOrEmpty(this.txtLicence.Text)){Client.Win.Comm.MessageBox.Info("注册码不能为空!");return;}try{if (txtLicence.Text == softReg.GetRNum()){Client.Win.Comm.MessageBox.Info("注册成功!重启软件后生效!");RegistryKey retkey = Registry.CurrentUser.OpenSubKey("Software", true).CreateSubKey(Encrypt.EncryptDES("mySoftWare", Const.EncryptKey)).CreateSubKey(Encrypt.EncryptDES("Register.INI", Const.EncryptKey)).CreateSubKey(Encrypt.EncryptDES(txtLicence.Text, Const.EncryptKey));retkey.SetValue(Encrypt.EncryptDES("UserName",Const.EncryptKey),Encrypt.EncryptDES( "Rsoft",Const.EncryptKey));this.Close();}else{Client.Win.Comm.MessageBox.Warn("注册码错误!");txtLicence.SelectAll();}}catch (Exception ex){throw new Exception(ex.Message);}}#endregion

生成机器码(由MAC地址和硬盘券盘号截取前面20位):

     ///<summary>/// 生成机器码///</summary>///<returns></returns>public string GetMNum(){string strNum = Computer.Instance().MacAddress + Computer.Instance().VolumeSerialNumber; // GetCpu() + GetDiskVolumeSerialNumber();string strMNum = string.Empty;if (strNum.Length > 20){strMNum = strNum.Substring(0, 20);    //截取前20位作为机器码
            }else{strMNum = strNum;}return strMNum;}

生成注册码:

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

获取电脑的基本信息:

 /// <summary>/// Computer Information/// </summary>public class Computer{public string CpuID;public string MacAddress;public string DiskID;public string IpAddress;public string LoginUserName;public string ComputerName;public string SystemType;public string TotalPhysicalMemory; //单位:Mpublic string VolumeSerialNumber;private static Computer _instance;public static Computer Instance(){if (_instance == null)_instance = new Computer();return _instance;}protected Computer(){VolumeSerialNumber = GetDiskVolumeSerialNumber();CpuID = GetCpuID();MacAddress = GetMacAddress();DiskID = GetDiskID();IpAddress = GetIPAddress();LoginUserName = GetUserName();SystemType = GetSystemType();TotalPhysicalMemory = GetTotalPhysicalMemory();ComputerName = GetComputerName();}///<summary>/// 获取硬盘卷标号///</summary>///<returns></returns>public string GetDiskVolumeSerialNumber(){try{ManagementClass mc = new ManagementClass("win32_NetworkAdapterConfiguration");ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");disk.Get();return disk.GetPropertyValue("VolumeSerialNumber").ToString();}catch{return "unknow";}finally{}}/// <summary>/// CPU序列号/// </summary>/// <returns></returns>string GetCpuID(){//try//{//    //获取CPU序列号代码//    string cpuInfo = "";//cpu序列号//    ManagementClass mc = new ManagementClass("Win32_Processor");//    ManagementObjectCollection moc = mc.GetInstances();//    foreach (ManagementObject mo in moc)//    {//        cpuInfo = mo.Properties["ProcessorId"].Value.ToString();//    }//    moc = null;//    mc = null;//    return cpuInfo;//}//catch//{//    return  "unknow";//}//finally//{//}return "";}/// <summary>/// MAC地址/// </summary>/// <returns></returns>string GetMacAddress(){try{//获取网卡Mac地址string mac = "";ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){if ((bool)mo["IPEnabled"] == true){mac = mo["MacAddress"].ToString();break;}}moc = null;mc = null;return mac.Replace(":", "");}catch{return "unknow";}finally{}}/// <summary>/// IP地址/// </summary>/// <returns></returns>string GetIPAddress(){try{//获取IP地址string st = "";ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){if ((bool)mo["IPEnabled"] == true){//st=mo["IpAddress"].ToString();
                        System.Array ar;ar = (System.Array)(mo.Properties["IpAddress"].Value);st = ar.GetValue(0).ToString();break;}}moc = null;mc = null;return st;}catch{return "unknow";}finally{}}/// <summary>/// 硬盘序列号/// </summary>/// <returns></returns>string GetDiskID(){try{//获取硬盘IDString HDid = "";ManagementClass mc = new ManagementClass("Win32_DiskDrive");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){HDid = (string)mo.Properties["Model"].Value;}moc = null;mc = null;return HDid;}catch{return "unknow";}finally{}}/// <summary>/// 操作系统的登录用户名/// </summary>/// <returns></returns>string GetUserName(){try{string st = "";ManagementClass mc = new ManagementClass("Win32_ComputerSystem");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){st = mo["UserName"].ToString();}moc = null;mc = null;return st;}catch{return "unknow";}finally{}}/// <summary>/// PC类型/// </summary>/// <returns></returns>string GetSystemType(){try{string st = "";ManagementClass mc = new ManagementClass("Win32_ComputerSystem");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){st = mo["SystemType"].ToString();}moc = null;mc = null;return st;}catch{return "unknow";}finally{}}/// <summary>/// 物理内存/// </summary>/// <returns></returns>string GetTotalPhysicalMemory(){try{string st = "";ManagementClass mc = new ManagementClass("Win32_ComputerSystem");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){st = mo["TotalPhysicalMemory"].ToString();}moc = null;mc = null;return st;}catch{return "unknow";}finally{}}/// <summary>/// 计算机名称/// </summary>/// <returns></returns>string GetComputerName(){try{return System.Environment.GetEnvironmentVariable("ComputerName");}catch{return "unknow";}finally{}}

完成以上即可实现软件注册!

转载于:https://www.cnblogs.com/jara/p/3952458.html

权限管理系统之软件注册模块相关推荐

  1. 权限管理系统(用户信息管理模块业务组件实现代码,带注解)

    用户信息管理模块业务组件实现代码,带注解,留意注解规范和代码命名规范. UserServiceImpls.JAVA文件代码   package com.amos.service.impls; impo ...

  2. 权限管理系统系列之序言

    权限管理系统我相信每个系统都会需要,所以设计一个好的权限管理系统会在系统开发中起到至关重要的作用,节省人力成本和资源,可以不用每次都为权限设计煞费心机.可能每个公司对权限的设计大体相同,略有不同,但是 ...

  3. JSP小项目,会员管理系统之实现注册功能

     1.上学期,在学期结束之际,学校安排实训,做了一个小小的JSP会员管理系统,前面,介绍过登录模块的实现,今天,来介绍一下会员管理系统中的注册模块,此系统是使用JSP和Servlet技术,在加上J ...

  4. Spring Security + SpringBoot + Mybatis-plus实现前后端分离的权限管理系统

    碎碎念 在学习Spring Security的时候,有收集到这样一张图,感觉描述还是很详尽的.有阅读了一下源码,个人理解,Spring Security默认对POST的/login请求做出响应,然后就 ...

  5. 卖500元个人版通用权限管理系统组件源码终于引来了下50万C#.NET软件开发订单的大客户...

    卖通用权限管理系统组件源码已经有2年半时间了,一直坚信会有懂行的客户会欣赏这套组件源码,无意间一个北京的一个客户购买了这套组件的源码,然后经过来回联系几次,客户对我的系统架构等有了浓厚的兴趣,并提前预 ...

  6. 通用权限管理系统组件中简易员工档案管理模块参考

    通用权限管理系统组件 (GPM - General Permissions Manager) 中简易员工档案管理模块参考 今天的努力决定未来的成败,其实这些年想想,都是靠那么执着的精神,把 通用权限管 ...

  7. SpringBoot后台权限管理系统(三)—权限模块

    SpringBoot 后台权限框架搭建(一)-后台框架搭建 SpringBoot后台权限管理系统(二)-前端工程搭建 SpringBoot后台权限管理系统(三)-权限模块 SpringBoot后台权限 ...

  8. 权限管理系统之模块管理

    4.4 模块管理 模块是平台功能的单元,是源码和数据的集合体. 模块管理(菜单.动作.数据)是整个平台中框架功能体现的核心.整个平台内的各个功能模块都是在此进行配置的. 这个功能模块主要是面向于平台上 ...

  9. 统一用户及权限管理系统

    欢迎来到 MSDN > 白皮书与解决方案建议 > 经典案例研究 统一用户及权限管理系统 发布日期: 2004-09-08 解决方案概述 用户档案 行业: 政府 业务对象:徐汇区政府 商业背 ...

  10. Vue+ElementUI实现的权限管理系统

    项目介绍 一款 Java 语言基于 SpringBoot2.x.MybatisPlus.Vue.ElementUI.MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化.组件化.可插拔的前后 ...

最新文章

  1. windows7 端口查看以及杀死进程释放端口
  2. matlab 2009a使用教程,实验一 安装MATLAB R2009a软件及其简单操作
  3. [Objective-C] Copy 和 MutableCopy
  4. 常见的几种异常类型 Exception
  5. 麻省理工计算机科学录取条件,2018美国留学:麻省理工学院托福分数最低录取要求...
  6. Vue的内容分发slot的使用
  7. OC 中 load 方法和 initialize 方法的异同
  8. Markdown语法--整理
  9. Linux tshark发送抓取的数据到kafka
  10. Python3常用正则表达式
  11. 有哪些 pmp 资料分享?
  12. matlab阶乘函数、排列组合函数、数组求和、未定义变量带入计算,简化结果值
  13. 【渝粤教育】电大中专消费者行为学_1作业 题库
  14. 学习云计算为什么先学Linux?
  15. CAS 单点登录/登出 系统
  16. { }大括号和[ ]中括号的用法
  17. matlab随机样本的选择,matlab随机抽样 | 学步园
  18. 3D游戏编程大师技巧+源码
  19. 无线射频专题《射频信号,链路预算与衰落容限》
  20. 基于Ryu 防火墙的检测和解决异常入侵的流量--实验

热门文章

  1. 金蝶BOS开发之--非空验证、时间、电话号码验证
  2. 强制 Google.com 域名使用 HTTPS(SSL)
  3. MSRA被曝停招国防七子及北邮学生
  4. 支付宝“跑路”,一亿用户服务彻底关停!
  5. 蚂蚁金服二面,竟然被问到事务的基本原理?
  6. 腾讯等技术大佬分享的高可用架构干货,全在这里了
  7. 改变计算机界的存储解决方案:RAID,30岁生日快乐!
  8. SqlServer和Oralce保留几位小数以及当末尾小数为0也显示
  9. windows server 2008 r2 x64 enterprise service pack1中aspjpeg.dll安装
  10. java多线程总结二(转)