OnGuard使用小记

1.变量定义

const
  CKey : TKey =
  ( $A7,$33,$6B,$BF,$C8,$28,$86,$D2,$72,$EE,$D8,$36,$28,$69,$FC,$9B );

var

  MachineKey : TKey;
  MachineModifier : LongInt;

  

 

2.initialization部分做初始运算

  MachineKey := CKey; //这里是一个random机器码

  MachineModifier := ABS(CreateMachineID([midUser, midSystem, {midNetwork,} midDrives])); //这里通过登陆用户名、操作系统、硬盘序列号,创建一个修饰符,用于对机器码修饰
 
  ApplyModifierToKeyPrim( MachineModifier , MachineKey , SizeOf(MachineKey) ); //这里就是用上一步生成的修饰符对机器码做进一步的运算,生成一个最终的机器码,仍然保存在MachineKey中。

 

 

3.计算注册码

var
  AMachineKey:string;
  ACode : TCode ;
  ARelaseCode:string;
begin
    AMachineKey:=BufferToHex(MachineKey,SizeOf(MachineKey));//这里将机器码转为字符串

   InitSerialNumberCode( MachineKey , 1122334455 , 0 , ACode );//这里用机器码MachineKey对序列号1122334455进行加密(注意这个1122334455是你要发给软件使用人的序列号,可以是任意一个整形数,将来要用这个来注册软件的),得到一个最终的注册码
   ARelaseCode := BufferToHex( ACode , SizeOf(ACode) ); //最终的注册码转为字符串,将来软件注册时就要对比用户填写的注册码是否与这个注册码相符,相符就说明注册成功,如果不成功,就是注册失败。
end;

 

 

4.如果注册成功的话,就要把这个注册码和序列号保存起来,我选用注册表保存:

  with TRegIniFile.Create do
    try
      RootKey := HKEY_LOCAL_MACHINE ;
      OpenKey( 'SOFTWARE\PRLSOFT', True ) ;
      WriteString( 'RegInfo','SMS_SnRegCode', RelaseCode );
      WriteInteger( 'RegInfo','SMS_SerialNumber', 1122334455);
    finally
      Free;
    end;

 

 

5.在我们的软件中,就要从注册表中读取出这个注册码,然后与计算出来的注册码做对比,如果相等,就说明软件已经注册,如果失败,就说明软件未注册,我们可以做一些限制

const   
  CKey : TKey =   
  ( $A7,$33,$6B,$BF,$C8,$28,$86,$D2,$72,$EE,$D8,$36,$28,$69,$FC,$9B );   
  
var
  MachineKey : TKey;   
  MachineModifier : LongInt;

  AMachineKey:string;   
  ACode : TCode ;
  ARelaseCode:string;

  AMyRelaseCode:string;
 ASerialNumber:Integer;

{$R *.res}

begin

  MachineKey := CKey; //这里是一个random机器码
  MachineModifier := ABS(CreateMachineID([midUser, midSystem, {midNetwork,} midDrives])); //这里通过登陆用户名、操作系统、硬盘序列号,创建一个修饰符,用于对机器码修饰
  ApplyModifierToKeyPrim( MachineModifier , MachineKey , SizeOf(MachineKey) ); //这里就是用上一步生成的修饰符对机器码做进一步的运算,生成一个最终的机器码,仍然保存在MachineKey中。

  with TRegIniFile.Create do
  try   
    RootKey := HKEY_LOCAL_MACHINE ;
    OpenKey( 'SOFTWARE\PRLSOFT',False );
  
    AMyRelaseCode := ReadString( 'RegInfo' , 'SMS_SnRegCode' ,'' );
    ASerialNumber := ReadInteger( 'RegInfo', 'SMS_SerialNumber',0);
  finally
    Free;   
  end;

  MachineKey := CKey;
  MachineModifier := ABS(CreateMachineID([midUser, midSystem, {midNetwork,} midDrives]));
  ApplyModifierToKeyPrim( MachineModifier , MachineKey , SizeOf(MachineKey) );
  AMachineKey:=BufferToHex(MachineKey,SizeOf(MachineKey));
  InitSerialNumberCode( MachineKey , ASerialNumber , 0 , ACode );
  ARelaseCode := BufferToHex( ACode , SizeOf(ACode) );

  if ARelaseCode = AMyRelaseCode then   //已经注册成功
   ShowMessage('已经注册成功')
  else
  begin //未注册
   ShowMessage('未注册');
   Exit;
  end ;

  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.Title := '无线助理标准版';
  Application.CreateForm(TDM, DM);
  ...  
  Application.Run;
end.

 

2009 05 04 OnGuard使用小记 1 变量定义 Delphi代码 const CKey : TKey $A7 $33 $6B $BF $C8 $28 $86 $D2 $72 $EE $D8 $36 $28 $69 $FC $9B ; var MachineKey : TKey; MachineModifier : LongInt; const CKey : TKey $A7 $33 $6B $BF $C8 $28 $86 $D2 $72 $EE $D8 $36 $28 $69 $FC $9B ; var MachineKey : TKey; MachineModifier : LongInt; 2 initialization部分做初始运算 Delphi代码 MachineKey : CKey; 这里是一个random机器码 MachineModifier : ABS CreateMachineID [midUser midSystem {midNetwork } midDrives] ; 这里通过登陆用户名 操作系统 硬盘序列号 创建一个修饰符 用于对机器码修饰 ApplyModifierToKeyPrim MachineModifier MachineKey SizeOf MachineKey ; 这里就是用上一步生成的修饰符对机器码做进一步的运算 生成一个最终的机器码 仍然保存在MachineKey中 MachineKey : CKey; 这里是一个random机器码 MachineModifier : ABS CreateMachineID [midUser midSystem {midNetwork } midDrives] ; 这里通过登陆用户名 操作系统 硬盘序列号 创建一个修饰符 用于对机器码修饰 ApplyModifierToKeyPrim MachineModifier MachineKey SizeOf MachineKey ; 这里就是用上一步生成的修饰符对机器码做进一步的运算 生成一个最终的机器码 仍然保存在MachineKey中 3 计算注册码 Delphi代码 var AMachineKey:string; ACode : TCode ; ARelaseCode:string; begin AMachineKey: BufferToHex MachineKey SizeOf MachineKey ; 这里将机器码转为字符串 InitSerialNumberCode MachineKey 1122334455 0 ACode ; 这里用机器码MachineKey对序列号1122334455进行加密 注意这个1122334455是你要发给软件使用人的序列号 可以是任意一个整形数 将来要用这个来注册软件的 得到一个最终的注册码 ARelaseCode : BufferToHex ACode SizeOf ACode ; 最终的注册码转为字符串 将来软件注册时就要对比用户填写的注册码是否与这个注册码相符 相符就说明注册成功 如果不成功 就是注册失败 end; var AMachineKey:string; ACode : TCode ; ARelaseCode:string; begin AMachineKey: BufferToHex MachineKey SizeOf MachineKey ; 这里将机器码转为字符串 InitSerialNumberCode MachineKey 1122334455 0 ACode ; 这里用机器码MachineKey对序列号1122334455进行加密 注意这个1122334455是你要发给软件使用人的序列号 可以是任意一个整形数 将来要用这个来注册软件的 得到一个最终的注册码 ARelaseCode : BufferToHex ACode SizeOf ACode ; 最终的注册码转为字符串 将来软件注册时就要对比用户填写的注册码是否与这个注册码相符 相符就说明注册成功 如果不成功 就是注册失败 end; 4 如果注册成功的话 就要把这个注册码和序列号保存起来 我选用注册表保存: Delphi代码 with TRegIniFile Create do try RootKey : HKEY LOCAL MACHINE ; OpenKey "SOFTWARE PRLSOFT" True ; WriteString "RegInfo" "SMS SnRegCode" RelaseCode ; WriteInteger "RegInfo" "SMS SerialNumber" 1122334455 ; finally Free; end; with TRegIniFile Create do try RootKey : HKEY LOCAL MACHINE ; OpenKey "SOFTWARE PRLSOFT" True ; WriteString "RegInfo" "SMS SnRegCode" RelaseCode ; WriteInteger "RegInfo" "SMS SerialNumber" 1122334455 ; finally Free; end; 5 在我们的软件中 就要从注册表中读取出这个注册码 然后与计算出来的注册码做对比 如果相等 就说明软件已经注册 如果失败 就说明软件未注册 我们可以做一些限制 Delphi代码 const CKey : TKey $A7 $33 $6B $BF $C8 $28 $86 $D2 $72 $EE $D8 $36 $28 $69 $FC $9B ; var MachineKey : TKey; MachineModifier : LongInt; AMachineKey:string; ACode : TCode ; ARelaseCode:string; AMyRelaseCode:string; ASerialNumber:Integer; {$R res} begin MachineKey : CKey; 这里是一个random机器码 MachineModifier : ABS CreateMachineID [midUser midSystem {midNetwork } midDrives] ; 这里通过登陆用户名 操作系统 硬盘序列号 创建一个修饰符 用于对机器码修饰 ApplyModifierToKeyPrim MachineModifier MachineKey SizeOf MachineKey ; 这里就是用上一步生成的修饰符对机器码做进一步的运算 生成一个最终的机器码 仍然保存在MachineKey中 with TRegIniFile Create do try RootKey : HKEY LOCAL MACHINE ; OpenKey "SOFTWARE PRLSOFT" False ; AMyRelaseCode : ReadString "RegInfo" "SMS SnRegCode" "" ; ASerialNumber : ReadInteger "RegInfo" "SMS SerialNumber" 0 ; finally Free; end; MachineKey : CKey; MachineModifier : ABS CreateMachineID [midUser midSystem {midNetwork } midDrives] ; ApplyModifierToKeyPrim MachineModifier MachineKey SizeOf MachineKey ; AMachineKey: BufferToHex MachineKey SizeOf MachineKey ; InitSerialNumberCode MachineKey ASerialNumber 0 ACode ; ARelaseCode : BufferToHex ACode SizeOf ACode ; if ARelaseCode AMyRelaseCode then 已经注册成功 ShowMessage "已经注册成功" else begin 未注册 ShowMessage "未注册" ; Exit; end ; Application Initialize; Application MainFormOnTaskbar : True; Application Title : "无线助理标准版"; Application CreateForm TDM DM ; Application Run; end ">2009 05 04 OnGuard使用小记 1 变量定义 Delphi代码 const CKey : TKey $A7 $33 $6B $BF $C8 $28 $86 $D2 $72 $EE $D8 $36 $28 $69 $FC $9B ; var MachineKey : TKey; MachineModifier : LongInt; const CKey : TKey $A7 $33 $6B $BF $C8 $28 $86 $D2 $72 $EE $D [更多]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值