zoukankan      html  css  js  c++  java
  • C# 简单软件有效期注册的实现

    ◆需求:
    公司一直以来对开发的产品都没有进行使用时间的控制,要么就是将日期限制写死在程序里面,每次都要编译新程序再发给客户,很不方便。于是公司让我写个模块,要求如下:
    1、无论哪个新开发的程序只要调用这个模块就可以控制有效期

    2、软件到期后需要我们提供有效的注册码软件才能继续使用
    (输入验证码,对机器和时间进行对比)
    3、客户修改了电脑的时间或者将软件移动到其他电脑依然可以控制

    (可以用你何必要用客户端时间啊,用服务器时间不就解决问题了)
    4、如果用注册表的方式,不允许当客户知道注册表后,修改注册表还能继续使用的情况
    5、控制方式不要太复杂
    RegDLL.RegClass reg = new RegDLL.RegClass(System.IO.File.GetLastWriteTime(System.Reflection.Assembly.GetAssembly(typeof(Form1)).Location).ToShortDateString());
    if (reg.MiStart_Infos() && reg.MiEnd_Infos())
    {
    Application.EnableVisualStyles();
    //Application.SetCompatibleTextRenderingDefault(true);//这句要注释掉,因为一个程序里面只能出现一句,dll里面已经有一句了,所以这里要注释
    Application.Run(new Form1());
    }
    else
    {
    Application.Exit();
    }
    ◆分析:
    1、当时我的第一反应就是dll,于是我就用了dll的方法来做。
    2、这个做一个注册机即可。
    3、我开始是想用网络时间的验证方式,但是客户的电脑不一定联网,所以不能用网络时间的方式。
    4、如果用注册表,重装系统或者拿到其他电脑软件还是无法控制,所以干脆不用注册表。
    5、需要注册功能的软件只需要引用dll并修改Program.cs文件为如下即可,够简单吧
    show source
    实现的思路:
    其实也挺简单,我用两个文件分别来记录软件注册的时间(下面提到的秘密文件)及到期的时间(下面提到的注册文件),这两个文件用记事本即可,文件强制作为软件的必要文件,缺少则无法运行软件,当然为了更加安全可以加密文件,不过我这里没有做。
    dll模块实现的功能如下:
    一、检查秘密文件是否存在(Eng.k)
    1.存在,则读取密文,密文为空则将程序的编译日期写入(调用此模块后软件第一次运行需要注册一次)
    2.密文不为空则跟当前电脑时间对比,验证电脑时间的有效性,有效则将电脑时间写入秘密文件
    3.这里的时间有效性就是说电脑的时间不能小于软件注册的时间,里面做了验证
    二、检查注册文件是否存在(Engi.p)
    1.存在,则读取密文中的软件有效期
    2.如果密文有效期为空并且秘密文件信息正确,则生成注册码,并写入有效日期
    3.接着比较当前日期是否处在两个文件的日期当中,是则软件有效,否则软件的注册码无效,需要重新注册有效的注册码
    三、注册机的实现
    1.当然就是根据日期生成注册码咯
    2.把注册码发给客户注册,至于是否有效就是dll要做的事情啦
    四、这种方式有个漏洞,若客户知道注册的原理,聪明点的就可以破解了,所以肯定不能透露O(∩_∩)O~
    ◆源码
    源码自我感觉写得不够漂亮,这里我就不提供了,不过提供我的dll文件、注册机及示例项目的下载地址:http://files.cnblogs.com/linyc/REGDLL.rar
    Ps:想看源码可以用反编译软件,看了源码就知道只是用了点"小伎俩"而已,欢迎大家反编译哈~有什么好的建议欢迎狠狠提出来交流哈~
    声明:本软件只作为交流技术使用,不可作为商业用途,如因此引起的法律问题及其他责任本人概不负责。
    转载请注明出处:http://www.cnblogs.com/linyc/archive/2011/03/26/1996397.html

  • 相关阅读:
    第10组 Beta冲刺(4/5)
    第10组 Beta冲刺(5/5)
    第10组 Beta冲刺(3/5)
    第10组 Beta冲刺(2/5)
    第10组 Beta冲刺(1/5)
    第10组 Alpha事后诸葛亮
    第10组 Alpha冲刺(6/6)
    第10组 Alpha冲刺(5/6)
    软工实践个人总结
    第09组 Beta版本演示
  • 原文地址:https://www.cnblogs.com/blogpro/p/11340609.html
Copyright © 2011-2022 走看看