Yin and yang
Well, this proves to be quite the dilemma. It differs from one situation to another, but a customer database from which you can keep track of your customers becomes more and more necessary, so that they can contact you and you can give them a password in case they format their drive/s and need to reinstall your app. (The database is to know whether the person querying is really a customer etc). Of course, you must decide if it is financially more viable to set up a customer-support infrastructure than to lose sales to software-pirating and reverse-engineering etc.
Such a customer-support infrastructure may be a web-based - or a callcentre based solution, or a combination of both, depending on your targetmarket.
Unfortunately, in my case, only a few individuals within my targetmarket have internet access, so the relatively cheaper web-based solution is not a viable option.
Generally, it is better to copy-protect your software as best you can (not to metion protecting against other bad-elements such as cracking and reverse-engineering), and to set up some sort of customer-support.
Like I said, it differs from one situation to another, but it seems to me that the better your product, the better you need to protect it, and the bigger the need for some sort of customer-support service.