Grr. Lost a reply cause the server was down. :evil:

I'd suggest that you go for a feature-reduced version rather than a time-limited one. You can just {$IFDEF} out relevant code so that it never appears in the shareware exe. Also, try to make it have a slightly different format from the final program so that users can't, for example, just email the maps and play 'em anyway.

The trouble is that anything client-side can be cracked given enough time and willpower. The above suggestion (creating registry keys) is easy to get around -- just run the exe and debug it. Whack a breakpoint at the relevant part, change an opcode or two (e.g. from jump-if-equal to jump-if-not-equal) and redistribute the cracked exe. Also, there are more direct ways (e.g. delete the key when your time limit expires and it'll be recreated, change the clock, etc).

You'd want to ensure that the unique value/however else it's protected is used throughout the code, so it all goes wonky if someone tampers with it. CRCs are probably a not-bad idea as well.

The only sure-fire way would be to involve a server somewhere the process, but that's kinda intrusive if your game doesn't use the net for anything else.

Check out the following article from Gamasutra (free registration required) for info on how the people who made Spyro tried to keep the hackers at bay.

Bear in mind that your game may not attract the attention of serious crackers if it's not a multi-million seller, which means that you don't have to go too overboard. However, do try to keep it a bit safe .