C# 简单软件有效期注册的实现【原】

摘要:
3.起初,我想使用网络时间验证方法,但客户的计算机可能未连接到互联网,因此无法使用网络时间方法。

◆需求:

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

1、无论哪个新开发的程序只要调用这个模块就可以控制有效期

2、软件到期后需要我们提供有效的注册码软件才能继续使用

3、客户修改了电脑的时间或者将软件移动到其他电脑依然可以控制

4、如果用注册表的方式,不允许当客户知道注册表后,修改注册表还能继续使用的情况

5、控制方式不要太复杂

◆分析:

1、当时我的第一反应就是dll,于是我就用了dll的方法来做。

2、这个做一个注册机即可。

3、我开始是想用网络时间的验证方式,但是客户的电脑不一定联网,所以不能用网络时间的方式。

4、如果用注册表,重装系统或者拿到其他电脑软件还是无法控制,所以干脆不用注册表。

5、需要注册功能的软件只需要引用dll并修改Program.cs文件为如下即可,够简单吧

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

实现的思路:

其实也挺简单,我用两个文件分别来记录软件注册的时间(下面提到的秘密文件)及到期的时间(下面提到的注册文件),这两个文件用记事本即可,文件强制作为软件的必要文件,缺少则无法运行软件,当然为了更加安全可以加密文件,不过我这里没有做。

dll模块实现的功能如下:

一、检查秘密文件是否存在(Eng.k)
1.存在,则读取密文,密文为空则将程序的编译日期写入(调用此模块后软件第一次运行需要注册一次)
2.密文不为空则跟当前电脑时间对比,验证电脑时间的有效性,有效则将电脑时间写入秘密文件

3.这里的时间有效性就是说电脑的时间不能小于软件注册的时间,里面做了验证

二、检查注册文件是否存在(Engi.p)
1.存在,则读取密文中的软件有效期
2.如果密文有效期为空并且秘密文件信息正确,则生成注册码,并写入有效日期

3.接着比较当前日期是否处在两个文件的日期当中,是则软件有效,否则软件的注册码无效,需要重新注册有效的注册码

三、注册机的实现

1.当然就是根据日期生成注册码咯

2.把注册码发给客户注册,至于是否有效就是dll要做的事情啦

四、这种方式有个漏洞,若客户知道注册的原理,聪明点的就可以破解了,所以肯定不能透露O(∩_∩)O~

◆源码

源码自我感觉写得不够漂亮,这里我就不提供了,不过提供我的dll文件、注册机及示例项目的下载地址:https://files.cnblogs.com/linyc/REGDLL.rar

Ps:想看源码可以用反编译软件,看了源码就知道只是用了点"小伎俩"而已,欢迎大家反编译哈~有什么好的建议欢迎狠狠提出来交流哈~

声明:本软件只作为交流技术使用,不可作为商业用途,如因此引起的法律问题及其他责任本人概不负责。

转载请注明出处:http://www.cnblogs.com/linyc/archive/2011/03/26/1996397.html

免责声明:文章转载自《C# 简单软件有效期注册的实现【原】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇深度聚类算法叙谈Nginx配置upstream实现负载均衡--引用别人的文章下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

services 系统服务的启动、停止、卸载

MySQL服务的启动、停止与卸载 在 Windows 命令提示符下运行: 启动: net start MySQL 停止: net stop MySQL 卸载: sc delete MySQL   Sc delete说明 Sc delete是WindowsDOS命令,用于删除Windows服务,从注册表中删除服务子项。如果服务正在运行或者另一个进程有一个...

react-native环境搭建

前言 native的环境搭建尤其是mac的电脑,无论是沙盒环境还是真实开发环境,都要能使用chrome访问外.....网否则会出现无法下载依赖的情况这里讲的是native的沙盒环境使用,主要是想要学习react-native的人,因为沙盒环境造实际开发环境要简单不少,少了很多配置手机和电脑的网络要使用同一个,否则会出现问题 环境准备 node 官网上下载安...

离线修改注册表

注册表存储数据存放在%systemroot%system32config 目录下,而用户的当前设定保存在用户配置目录下的ntuser.datBCD-Template (xp以后的机器上有,win10等)components (xp以后的机器上有,同上)Ntuser.datsystem 对应HKLMsystemsoftware 对应HKLMSoftwared...

在安卓手机上通过虚拟机运行Windows XP

细数当年的桌面版Windows,似乎针对ARM架构处理器的版本并不多,笔者曾用过一段时间的Windows RT,对它流畅的操作和强大的完整版Office非常满意,然而Windows RT却因不能升级到Windows10而与UWP应用无缘。Windows RT虽被微软宣布了“死缓”,但这并不意味着你不能在ARM架构的处理器上运行桌面版Windows。相信很多...

【转】在Eclipse下搭建Android开发环境教程

本文将全程演示Android开发环境的搭建过程,无需配置环境变量。所有软件都是写该文章时最新版本,希望大家喜欢。   一 相关下载 三 Eclipse配置   (1)Java JDK下载   1 安装android 开发插件   (2)Eclipse下载   2 配置Android SDK   (3)下载Android SDK   3 新...

工具篇01-代码扫描工具Gamma

1. Gamma简介 Gamma是由Acellere开发的智能软件分析平台。 它通过加快代码审查,支持开发人员和团队在更短的时间内构建更高质量的软件。 它会自动对代码中的热点进行优先级排序,并提供清晰的可视化效果。 凭借其多向量诊断技术,它可以分析多个镜头的软件,包括软件设计,使公司能够透明地管理和改进其软件质量。 2. Gamma使用教程 1)注册账号...