license资料搜集

我想要达到的目的就像我们从网上下载的有些软件一样,比如说开始我可以给他一个licence码,根据这个licence码,用户可以试用1个月,到期后,用户可以购买新的licence。但我现在不太清楚那些人是怎么实现的,或者是不是有一些通用的规范? 
____________________________________________________________________________________________
license是做版权声明等的吧,跟防盗版没关系 
  参照GPL什么的写吧.readme文件而已________________________________________________________________________________________
取一个唯一标识,比如MAC地址,生成一个标识符用于你的系统标识 
  用户给你这个用户标识,你就根据这个标识给他一个序列号,应用程序检测这个序列号的正确性
---------------------------------------------------------------------------------------------
举个简单例子 
  
  设置一个ini文件内有ip限制,时间限制等你自己需要的设置然后使用md5加密整个ini文件,将加密后的32个字符(签名)添加到文件的最后,程序运行时,首先判断签名是否和license文件相符。 
  然后将其它选项读入内存,定时判断(比如运行时间限制等)
----------------------------------------------------------------------------------------------------
解决方法有 
  1.过期问题:要求程序到你的服务器去时间,当然,这样交互,可能是被客户禁止的。 
  2.防止客户重装系统的问题:自己编写一个虚拟机,读取主板序列号,这样,别说他重新安装了,就算他换了硬盘,也别指望再本机器上使用超过30天。但要实现这条,必须和你的服务器交互,把对方的序列号和注册时间发送到你的服务器中保存起来,每次程序启动的时候,再从你的服务器中读取时间信息。 
        但,读取主板序列号,并发送消息似乎有法律纠纷问题,呵呵  
------------------------------------------------------------------------------------------------------
读硬盘序列号,对序列号编程序,是很好的,我以前用PB做过,现在忘记了,你到天极网去收索加密,有现成的例子的.
-----------------------------------------------------------------------------------------------------
用加密锁,都提供软件试用限制功能,还可以让你的用户觉得你的软件是真正的软件产品。
-----------------------------------------------------------------------------------------------------
每一个软件的完成都是编程人员心血的结晶,因而,当盗版的黑手伸向你的劳动成果时,怎不令人可怜、可恨!逼得我们只好拿起武器,捍卫自己的劳动成果。以下的两段小程序,可以防止他人非法使用自己的软件。(让我们共同反对盗版!)   
  
    程序一:放于主程序的开头,用于检查文件“cjgl.dat”是否存在,若不存在,便退出,程序不能继续执行。需要注意的是文件“cjgl.dat” 不能与主程序放于同一目录。这里放在win.com所在目录,选win.com主要是因为win.com必定存在。程序段如下:   
  
    path1=fullpath(″win.com″,1)   
  
    &&检查文件win.com所在目录   
  
    len=len(path1)-7   
  
    fil=left(path1,len)+″cjgl.dat″   
  
    if   !file(fil)   
  
    &&   如文件cjgl.dat不存在提出警告   
  
    mes=messagebox(″要用软件,请与作者联系!″,64,″重要信息″)   
  
    quit   
  
    endif   
  
    程序二:用于软件的注册,此程序运行结果即将软盘上的“cjgl.dat”文件拷贝至win.com所在目录下。cjgl.dat文件内容任意。程序如下:   
  
    set   talk   off   
  
    path1=fullpath(″win.com″,1)   
  
    len=len(path1)-7   
  
    fil=left(path1,len)+″cjgl.dat″   
  
    if   file(fil)   
  
    &&   先判断cjgl.dat是否存在指定目录下   
  
      =messagebox(″学生成绩管理系统已经注册!″,64,″提示″)   &&如存在,说明已注册过   
  
    else   &&如不存在,拷贝程序   
  
    copy   file   cjgl.dat   to   &fil   
  
      =messagebox(″注册完毕!″,64,″提示″)   
  
    endif   
  
    quit   
  
    若加上时间限制及内存变量,可让程序限时试用。 
-----------------------------------------------------------------------------------------------------
可以使用的方式很多,例如在注册表中写个记号,也可以使用一个特殊的文件,这个文件是跟机器的硬件信息有关的,记载了用户的使用信息,且是不允许用户覆盖的(如果用户用以前生成的文件覆盖则可以判断)  
-------------------------------------------------------------------------------------------------------
每次启动纪录一个时间date[0]...date[n]. 
  第n+1次启动时date[n+1]. 
  if(date[n+1]   <=   date[n]) 
            exit(-1); 
  if((date[n+1]-date[0])>30天) 
          exit(-2); 
  write   date[n+1]   to   纪录 
  
  存放时间可以为注册表或存放在system32/下,注意保密。程序可以在第一次运行时生成键值或文件。 
    以上方法时间精确到秒效果最好。 
 ------------------------------------------------------------------------------------------------------
答3:
ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconlicensingcomponentscontrols.htm
启用您的组件的授权

将 LicenseProviderAttribute 应用到类。
在构造函数中调用 LicenseManager.Validate 或 LicenseManager.IsValid。
在类的终结器中或在调用终结器之前对任何已授予的许可证调用 Dispose。
下面的示例显示了一个 Windows 窗体控件实现授权的简单情况。

[C#]
using System;
using System.ComponentModel;
using System.Windows.Forms;
public class MyControl : Control {
    private License license = null;
    public MyControl () {
        license = LicenseManager.Validate(typeof(MyControl), this);
    }
    protected override void Dispose(bool disposing) {     
       if (disposing) {
          if (license != null) {
            license.Dispose();
            license = null;
          }
       }
      base.Dispose(disposing);
    }
    ~MyControl() {
        Dispose();
    }
}
 
[Visual Basic]
Imports System

Imports System.ComponentModel

Imports System.Web.UI

<LicenseProvider(GetType(LicFileLicenseProvider))> Public Class MyControl

Inherits Control

    Private license As License

   

    Public Sub New()

        license = LicenseManager.Validate(GetType(MyControl), Me)

    End Sub

   

    Public Overloads Overrides Sub Dispose()

        If Not (license Is Nothing) Then

            license.Dispose()

            license = Nothing

        End If

    End Sub

End Class

下面的示例显示了一个 ASP.NET 服务器控件实现授权的简单情况。

[C#]
using System;
using System.ComponentModel;
using System.Web.UI;

public class MyControl : Control {
    private License license = null;
    public MyControl () {
        license = LicenseManager.Validate(typeof(MyControl), this);
    }
    public override void Dispose() {     
          if (license != null) {
            license.Dispose();
            license = null;
          }
      base.Dispose();
    }   
}
 
[Visual Basic]
Imports System

Imports System.ComponentModel

Imports System.Web.UI

<LicenseProvider(GetType(LicFileLicenseProvider))> Public Class MyControl

Inherits Control

    Private license As License

   

    Public Sub New()

        license = LicenseManager.Validate(GetType(MyControl), Me)

    End Sub

   

    Public Overrides Sub Dispose()

        If Not (license Is Nothing) Then

            license.Dispose()

            license = Nothing

        End If

    End Sub

End Class

此处的示例使用了内置的许可证提供程序类 LicFileLicenseProvider,它使用文本许可证文件并模仿 COM (ActiveX) 授权的行为。更加复杂的授权情况(例如调用 XML Web services 来限制组件实例的数目)需要多种不同的许可证提供程序。

在 Windows 窗体快速入门中的 Building Applications(生成应用程序)-> Creating Controls(创建控件)-> Licensing Controls(为控件授权)下提供了一个授权示例。

请参见
开发组件


______________________________________________________________________________________________
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值