共享软件都有限制,比如时间限制,使用次数限制,功能限制等。1、在收到用户注册费用以后,是不是要手工给每个人都寄去不同的软件注册码?
那岂不是很麻烦?2、那注册码是怎样产生的呢?听说可以通过用户硬盘序列号来产生,那么当收到注册费后,到底是怎样为每个用户产生不同的注册码的呢?3、在《Windows优化大师》里,是先输入一个用户名,然后得到一个“注册申请码”,是不是该“注册申请码”包含了本机的信息,然后把它发给软件作者,作者根据该号码产生出一个软件注册号,然后再发给用户呢?我不知道我的理解对不对,如果是这样的,那么这个“注册申请码”是怎样得到的,又是怎样通过它产生软件注册号的?4、现在一般的共享软件是不是都是这样注册的?那不是很麻烦吗?要先收到用户的“申请码”,再产生一个注册号,然后发给用户,没有别的简单的方法吗?其他软件也是通过这种方式注册吗?请各位朋友给我详细讲讲这些东西,谢谢大家了。

解决方案 »

  1.   

    好像读取硬盘序列号的方法挺痛苦的,是吗?
    我也想了解一下这方便的情况,帮你Up一下!ePing
      

  2.   

    大体思路是这样的
    先获取硬件号(可以是硬盘或主板等,不唯一),按一定规则加密后返回A,用户把这个号码A给你之后,你可以根据这个A还原硬件号,
    然后你根据他的硬件号,按另一个规则生成序列号B,用户用序列号B就可以正常运行软件了。
    当然你还可以给他不同类型的序列号,如在某日期前可以使用的,或一定次数限制的,这要你在程序中加了。
      

  3.   

    function GetHDNumber(Drv : String): DWORD; //得到硬盘序列号
    var
      VolumeSerialNumber : DWORD;
      MaximumComponentLength : DWORD;
      FileSystemFlags : DWORD;
    begin
      if Drv[Length(Drv)] =':' then Drv := Drv + '\';
      GetVolumeInformation(pChar(Drv),
                           nil,
                           0,
                           @VolumeSerialNumber,
                           MaximumComponentLength,
                           FileSystemFlags,
                           nil,
                           0);
      Result:= (VolumeSerialNumber);end;