如何制作授权文件(200分)

  • 主题发起人 主题发起人 thr26
  • 开始时间 开始时间
T

thr26

Unregistered / Unconfirmed
GUEST, unregistred user!
思路如下:
将获得授权的公司名称,等基本信息集成到一授权文件中(xx.dll)
在所有的报表引到到基本信息的地方从该授权文件中读取。
请问高手此法可行不?
反编译可显示.dll中的函数?
或有更好的思路请提供。欢迎大家讨论。
 
那你的软件卖给不同的公司岂不是每个公司都要单独编译一个.dll给他?
还不如把这些信息加密后存入一个单独的文件或者数据中.
 
做license文件
 
我正有此意,卖一家公司,编一个DLL
 
很简单,做一个资源文件,而此资源文件可以被编为一个DLL,这方面的资料在以往的贴子里太多了,找找看,也可以到陈经韬的藏经阁去找一下.
 
初步写了下:(auther.dll)
unit abc;
interface
function getcompany(S: string):string;
{ 指定调用协议 }
implementation
function getcompany(S: string):string;
begin
try
if s='name' then
Result:='锐信管理系统';
if s='address' then
Result:='丰泽区XX大厦';
if s='englishname' then
Result:='Quanzhong company';
finally
Free;
end;

end;
end.

调用:
unit Unit111;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
function getcompany(S: string):string;
external 'auther.dll';{ 指定过程来源 }
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=getcompany('name');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:=getcompany('name');
Label2.Caption:=getcompany('address');
Label3.Caption:=getcompany('englishname');
end;

end.

//调用时显示出来了,但还是有出错提示,第一行没问题。
Label1.Caption:=getcompany('name');
后两个出错,会不会是有关DLL的调用释放问题。请高手指点。
 
Dll文件中少了个exports语句
 
library auther;
uses
SysUtils,
Classes,
abc in 'abc.pas';
{$R *.RES}
exports getcompany;
begin
end.

//export是有的。这个项目文件我没有COPY上来。如上。
 
library auther;
uses
SysUtils;
function GetCompany(s: PChar): PChar;
stdcall;
begin
if s='name' then
Result:='锐信管理系统'
else
if s='address' then
Result:='丰泽区XX大厦'
else
if s='englishname' then
Result:='Quanzhong company'
else
Result:='';
end;

Exports
GetCompany;
begin

end.

--------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
function GetCompany(S: PChar): PChar;
stdcall;
external 'auther.dll' name 'GetCompany';
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=GetCompany('name');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:=getcompany('name');
Label2.Caption:=getcompany('address');
Label3.Caption:=getcompany('englishname');
end;

end.
 
后退
顶部