0

how to develop a trial version of window or web application in dotnet technology. as a result user can use that windows or web apps for certain day and also will not be able to use after resetting his system clock.how could make this type of trial version both in window and web. please give me the concept in detail.

thanks

Thomas
  • 33,544
  • 126
  • 357
  • 626
  • 2
    possible duplicate of [How to create trial version of .NET software?](http://stackoverflow.com/questions/2423976/how-to-create-trial-version-of-net-software) – Shoban Jan 21 '11 at 18:20
  • Why would you want to do that? Most trials don't have a time limit, but are rather limited in features. The only other way I know of is a serial key. –  Jan 21 '11 at 18:20
  • Not sure what you're talking about, lots of trials are time limited. – Greg Jan 21 '11 at 18:27
  • possible duplicate of [Application verify license enforement?](http://stackoverflow.com/questions/1064038/application-verify-license-enforement) – H H Jan 21 '11 at 18:35

3 Answers3

2

One way to accomplish it on Windows it to encrypt the installation date in the Registry, and check the date of Latest Log in the System.

This way reseting the clock gives no effect.

bratao
  • 1,980
  • 3
  • 21
  • 38
  • What happens when the registry key is removed? :) Change date to a future date,install, switch back to current date... – Shoban Jan 21 '11 at 18:28
  • i think there will be problem that when application will run by user and if i compare last login date with current system date then there will be problem because user can change system date and then he could run the apps. actually i want if trial version period is 15 days then user can run that apps as many time with in 15 days but after 15 days he will not be able to run the apps. please explain in detail. – Thomas Jan 21 '11 at 18:30
  • Also, uninstalling the app and running a registry cleaner will often erase the orphan registry key allowing the user to simply re-install the app everytime time runs out. – Ayush Jan 21 '11 at 18:30
2

The usual way is a registry key, or set of same. You keep track of the install date, and once it's passed without the user entering a key, you set a flag saying the time's up. You could also track individual uses; after 30 "starts" it gets locked (preventing workarounds involving changing the system time). A knowledgeable person can always hack such an implementation because they can access and edit their registry, but it'll keep 95% of your users honest.

The most foolproof way requires a web service, which means the app requires an Internet connection to run (no problem if it does anyway, but you might have trouble convincing your users that a notepad app need internet access). The app will call the service on installation to say it's been installed on the current date with a given license key (or a default "trial" key) and ask for a GUID identifying the installation. Then, each startup, it will ask another service if it's allowed to run. If you expect your app to be popular, you'll need some serious hardware behind the scenes as the service will be hit every time any installation starts up.

KeithS
  • 70,210
  • 21
  • 112
  • 164
  • +1 Good description of concepts with pros and cons - good answer to a somewhat-vague question. :) – Dan J Jan 21 '11 at 18:35
0

It all depends on how critical your software is. In order to make a trial version of a web app, you could incorporate the following mechanisms.

  1. Obfuscate assemblies - This prevents users from decompiling\reverse engineering your code and looking into how the trial version logic is implemented.

  2. Release different versions -Maintain two different versions of the product i.e. Full version and a demo version, by using compiler directives. This prevents the trial version from being cracked.

  3. Limit features - Say if its a payroll application, limit the number of users, say something between 10 or 20. Suppose if its a BI app, then embed watermarks on generated graphs and reports. Next what you could limit the number of logins per day or put restriction on major features from being used more than a specific number of times per day.

  4. Configuration Storage - Store trial version counter related data in a encrypted file and keep the hash of that file separately. Each time after writing to the file update the hash and also verify the hash before reading from the file. Also make sure the trial version configuration file's creation date is same as that of any other program file, so as to prevent it from being replaced with a new one, so as to reset the counters.

Here are couple of links from SO on this same query.

  1. Implementing a 30 day time trial

  2. https://stackoverflow.com/questions/981294/copy-protection-tool-to-limit-number-of-units/2025926#2025926

Community
  • 1
  • 1
AbrahamJP
  • 3,425
  • 7
  • 30
  • 39
  • How would maintaining different versions work, when the full version can be distributed to non-licensed users ? – Sujoy Jan 18 '19 at 06:01