?
Solved

How to Enforce Program Licensing Programatically?

Posted on 2003-03-03
10
Medium Priority
?
218 Views
Last Modified: 2010-04-04
Hello Delphi Experts,

I would like to enforce the licensing of my program by the number of records stored in the main data table.  For instance...
1 to 250 records  - $25
151 to 600 records -  $75
601 to 1500 records - $150
etc...
And have a programatic check to not allow any additional records to be added until money for the next level of license is sent in.  Also, would need the ability to increase the license remotely, as the users are in different states.

Does anyone know of any third-party products that provide this functionality or is this something that I would have to develop?  If I have to develop it, any suggestions on anything to read on the subject?

Off the top of my head it sounds like I would need the ability to send an encrypted file that could be loaded into a database table in the application with information that would "increase the license to the next level".  e.g.- increase the record count that the program is checking against.  But it would need to be encrypted when sent in the file and stored encrypted in a database table to prevent hacking.  And since it is stored in a database table, it could then be read by the program, thereby enabling the "increasing of the record-count remotely".  

I have never worked with encryption routines before.  Are there commercial products for this or is this something I would have to write myself?

Anyway... if you have any experience on this subject, your thoughts would be appreciated.  

Thank you.

Dean Atteberry.



0
Comment
Question by:DeanAtteberry
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
  • +2
10 Comments
 
LVL 1

Expert Comment

by:venks
ID: 8058918
Have a look at Turbopower 'Onguard' components available for free in Sourceforge.net(do a search for Turbopower and select onguard to download the compos)There are free applications which guide you to the various functions
venks
0
 
LVL 3

Expert Comment

by:sfock
ID: 8059421
after onGuard might be helpful, you should probably also take a look at Turbo Powers OnActivate wich supports the full licencing lifecycle. As much as i know they have not given it free, but you can pruchase it at Http://www.turbopower.com At their site they also do a compare of OnGuard and OnActivate.
0
 
LVL 3

Expert Comment

by:ILE
ID: 8060054
wery intresting problem i have the simular problem
and i do the folowing

like an another point of wiew to the problem

it will work with the paradox,dbase, acces


i lok the database file how is growing
but with

var fil:file of byte;
    i:longint;  
begin
assignfile('c:\bla ..bla\base.db',fil);
reset(fil);
I:= getfilesize(fil);  
closefile(fil);
end;

in the i is the filesize fo base in bytes;

like base is growing in the i-variable you will have biger and biger number


disadventage of this is the database is growing in "jums"
and the erased records also take place in data bases



in sql queryes u mey use query like this

select count(*) from base

with that command u will be have a count of records

this also work and withs sql-bases and with local bases




for seceond part of question

I use  pop3 componet to retrive mails from sicret mail account

every aplication i sent have a unique number and with some matehematic (use whatever you wont) application "lissen" see do the mail for her use is in the pop3 server


when the mail arive with some other mathematic ()
application take a how to go with the licence


this is a wery low teach but and wery low cost solution


and work wery wel in practice













0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 1

Expert Comment

by:SimesA
ID: 8060164
Take a look at Armadillo (http://www.siliconrealms.com/armadillo.htm) it allows various levels of licensing, and one license can be updated to another very easily.
0
 
LVL 1

Expert Comment

by:venks
ID: 8061795
Turbopower onGuard is free.Ihave downloade it (with source code).You can get the link from turbopower.com
venks
0
 

Author Comment

by:DeanAtteberry
ID: 8064640
Venks,

I looked at sourceforge.  here is what it says...

OnGuard is a library to create demo versions of your Borland Delphi & C++Builder applications. Create demo versions that are time-limited, feature-limited, limited to a certain number of uses, or limited to a certain # of concurrent network users.

While the demo version (time, feature, uses) and # of network users is good functionality, what I am looking for (in addition to those things) is the ability to control usage by number of records in the master data table.  e.g.-

1 to 250 records  - $25
251 to 600 records - $75
601 to 1500 records - $150

and if, after several months, they have enough records and need to cross one of the boundaries to the next level, I need to be able (via e-mail) to increase the number of records they can have in the main data table.

Thanks,

Dean Atteberry.
 
0
 
LVL 3

Expert Comment

by:sfock
ID: 8065702
with onGuard you could send a new code via E-Mail. You could generate the codes with modifiers standing for a Amount n of whatever (maybe your records in this table.

When you check the current code you simply try it with the possible modifier and then you know if your code is valid at all and how many records are allowed ...

isn't that what you wanted?
0
 

Author Comment

by:DeanAtteberry
ID: 8065971
Venks,

I am not familiar with the code generation process of OnGuard.  You sound like you have used it in a project before?  It sounds like the process involves passing strings to a routine that then returns a code.

I understand that that could then be sent via e-mail to the customer.

Then, on the program side, the code would have to be deconstructed back into its original component strings in order to know what the record limit is.  I assume this is what you meant by "...you simply try it with the possible modifier...".  Does onGuard supply libraries that can be called from within the program to do the deconstruction?

Thanks.
0
 
LVL 3

Accepted Solution

by:
sfock earned 400 total points
ID: 8066178
well i am not venks, but will also answer ;-)

Yes i have used OnGuard  several times before.

Generally OnGuard works like this:

You generate a Key. You place this key into your exe and store it somewhere with your project files.

now you place a component on your application This component encapsulates a specific type of code like a UsageCode or a SerealNumberCode. This component hat a Event "OnCheckCode" if you don't implemet it the application won't run anymore. Usually you implemt it with something like this

code := ReadCode;
if isValidCode(code) then
  continue;
else
  Application.terminate;

(This is not valid source it shall just show the idea)

now you can generate a code that fit's to your component.
If you pass it into the "isValidCode" it'll say it's okay.

when you generate a code you can add a modifier this is a longint value. If you generate the code with a modifier "isValidCode" will return false unless you add the modifier to your component.

In this way you could use the modifiers to mention you number of rows like this

code := ReadCode;
LicenceNo := -1;
for i := 1 to 10 do begin
  myOgComponent.modifier := i;  
  if isValidCode(code) then
    LicenceNo := i;
end;
if LicenceNo < 0 then
  Application.terminate;
case LicenceNo of
  1 : setMaxRecords(250);
  2 : setMaxRecords(600);
  3 : setMaxRecords(1500);
  4 : setMaxRecords(3000);
...
end;

I am sorry that this is not a correct source the methods are called and named differntly, but i have no example here and the idea will work.
0
 

Author Comment

by:DeanAtteberry
ID: 8066375
Thank you.  I will give it a try.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…
Suggested Courses

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question