One note on this. Notice that there is not a single application out there has has not been cracked (at least not one where someone who was interested enough to to bother to try it).
You have to ask yourself why are you trying to limit its use and how much effort you're willing to put into doing it vs how effective it will be. There is no completely fool proof solution. You can do the hidden file thing, until one person finds it and posts it somewhere. You can do the self modifying executable thing which will work until they simply reinstall. Almost ANY attempt can be foiled by someone actually patching your executable to simply jump over your code to check for validity (and of course posting the patch).
If you do go down this road, be darn sure whatever you do absolutely does not interfere with your apps regular use. Nothing will lose you potential customers faster than a PITA copy protection scheme, or one that's flakey.
One approach is to simply state in your EULA that they can use it for X period of time and depend on the honour system. Not very sexy I know, and kinda giving in, but like I said, it just depends on how much time you want to spend on something that eventually will be defeated.
Another approach is to deliver a limited functionality version. Be sure to build a version that truely has those functions missing vs disabled (as someone can figure out how to activate the disabled functions). Not knowing your app it's hard to say what functions you can disable, but you can usually do things like Save or Print.