If you want it to be based on real time, then I would suggest using the internet to test the date and time when you install and when you run.
Because the user can easily change their system clock, that is the only real way that I see you can do it.
You can use the library here:
Daytime, Internet Time Service Class[
^] and use the DayTime.GetTime() to get the time from the NIST server.
You can use that to set when the license starts and to check whether it has expired. Of course, then an internet connection would be required.
[Update] So you added the requirement that there is no internet connection.
Without an internet connection, you're going to have a real hard time doing this. This is the only way that I can see doing it (but that doesn't mean it is the only way, it's just the only way I know):
When the license is originally created, write an encrypted value to the registry with the current time and date as the start date.
Then, write the same value to another key and call it something like CurrentTimeDate.
Then, whenever the user opens, closes, and periodically throughout the program, update the CurrentDateTime value.
If the system clock is ever less than the value in that key, then disable your program.
They will still be able to fake the clock some if they keep track of when they closed the program and then reset the system clock every time to a few seconds after they closed it last, but that's the best I can think of.