Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I make my product as a trial version for 30 days?

Tags:

I have created my product and also generated license key for that but I want to ask that key after 30 days. I have do it with registry value storing the date with adding 30 days in that. But I found that if the user change the system date with 30 days before my logic not work.

So is there any solution for the trial version software without checking system date and allow only 30 days of trial?

like image 488
Manish Avatar asked Oct 06 '09 12:10

Manish


People also ask

How do I use trial version after expiry?

Uninstall the program and reinstall it. This is basic method used to keep a program running after its trial period has expired, but it will not work will all software. Many software engineers program trial software to expire at the end of a given time and reinstalling the software will not restart the clock.

Can trial version of the software be used for production purposes?

You may only use the trial edition for internal evaluation purposes during the trial period. You may not deploy any applications to a production environment. You may run load tests of up to 250 virtual users during the trial period.


2 Answers

You could have another registry key that you increment after every day's use. That way, even if they change the computer's date, this key would indicate to your program that it's been running for > 30 days.

Additionally, this value could be encrypted so that if the user tries to manually change it, the program can refuse to run because it was unable to decrypt the value and get a valid number out of it.

To get around reinstalls, you could add some information to any file saved with the trial version of your app which is unique to that specific version of the app (perhaps a timestamp from when it was installed). When a trial version of your app tries to open a file, it will check this signature and ensure that it was created with that same instance, otherwise refuse to open the file. This essentially neuters the ability to simply reinstall the app and continue using it.

At the end of the day though, the user has complete control over their machine and can probably find a way around whatever it is you want to do (short of accessing a web service where these details are kept before you let the user use the app). You probably shouldn't expend so much energy trying to stop the guys who are willing to go through this extra trouble, but instead spend that extra time/money/energy improving the app for those who are willing to pay.

like image 127
Joel Martinez Avatar answered Oct 06 '22 01:10

Joel Martinez


I have one simple solution for you.

Take 2 variables for registry: 1. date 2. counter

steps:

  1. Set a counter = 1

  2. Copy system date to date

  3. Check each time if the date is different than the current date, than copy that date to the registry date, also increment the counter by 1. If the date is same, don't do anything.

  4. Now you can check you counter for trial days expiration

By using these trick, if user change the system date to previous date than also it works.

For registry you can encrypt the date & counter so that technical person would not recognize your logic!

cheers...

ADDED

This logic fails only when user doesn't change the date for each day! Again we have the solution for that!

I don't know whether it is possible or not but you can always have some solution:

  1. count the total time for trial period & store it in registry.
  2. Now count the total time for each run and add it in another variable. (I hope that it can be done by timer)
  3. Compare above two values for taking decision for expiration.
like image 28
Vikas Avatar answered Oct 06 '22 01:10

Vikas