How can I make a 30-day trial for my application? I need to allow users to use an application only 30 days. How to count these days?
I keep the first and the last date in registry. But if to change a system time – no protection will be. I need to count these 30 days.
You could probably come up with a system that requires an internet connection, but without something that the user can’t tamper with, I don’t see a solution.
Any solutions that rely on an untrusted element (an element of the protection that is under the user’s control) is critically weak.
The simplest way I can think of to protect against the user moving the clock back is to limit the total number of launches.
However, attempts to limit the number of launches requires persistence — saving data to the disk, perhaps encrypting and storing a modified version of your activation data file –
Imagine that you count one of the 30 days as “used up” once the app has been launched, on a unique occasion, even when the same date is re-used. In order to avoid using up more than 1 “activation time day” when launched, the user must allow your software to re-save its activation file each time it runs.
To block that approach, the user needs only to keep the apparent date from changing, plus they must either prevent you from storing anything to disk; or they can simply track and record your changes and reverse them out, either using a monitoring process, or using VMWare snapshots. About VMWare snapshots, you can do nothing. The virtual machine’s disk is not under your control.