For the other questions...
3. I'd never seriously thought about how this might be done before so here is an attempt.
I'd not have the installation do anything other than install the version with the date checking software enabled within it. I'd write the date checker to be integral to the correct running of the software so that it couldn't easily be cracked.
On the first run I'd create an innocuous registry key and enter the value 1, the current date and a GUID into them. They should be encrypted together. Store the GUID in a verification file somewhere with your system or better yet, alter the EXE file itself to include it. Yes, write to your own application!
On subsequent runnings, I'd check the GUIDs match and check system date against the entered date and increment the counter by the number of days that has passed.
If the counter was greater than 30, then disable the software.
4. This method has the advantage of taking care of "4" as well because there is nothinghappening during the install.
Furthermore, it doesn't matter if the pirate sets his clock back because your comparing the counter rather than dates.
Also a re-install wont help because you only create the registry keys if they dont exist, so the originals will still be in place.
And the key must match the installation because of the pair of GUIDs (Remember the registry key must be encrypted for this to work) so the pirate cant blow away the key or the GUIDs wont match.
So the only solution to keep the software running is to find and remove that key along with all the software and re-install from scratch.
For the average Joe, this means a reformat, reinstall.
Interesting question. I hope I've helped.
Cheers,
Tim.