the one thing i'd disagree with above is the comment about making your own registration/protection system..
we made our own just because we have special needs and dont care too much about preventing people from illegally using our programs since the motivation for them to do so is so minimal. but if you are serious about protecting your software, i would not recommend using your own homemade system. the work involved cannot possibly justify the outcome. id recommend something like asprotect, armadillo, execryptor, etc.
i'd also suggest you consider carefully how much you want to worry about such issues..
just keep in mind that while jan-s makes a good point:
In order to protect the software from being cracked, you may consider offering a freely downloadable demo version with some features disabled (i.e. the related code is not even compiled into the demo) and offer the full version for customers only. This is simple, but uncrackable..
but you might also want to listen to zaine's rant in the last podcast against crippleware (
http://podcast.donationcoder.com), since it discusses the downside/caveats to bear in mind when taking this approach.
you need to strike a balance between protecting your program and making life pleasant for your real users.
remember that your objective when selling software is to find those potential happy customers and get them as customers. the hardest part is almost always letting these people know about your software and convincing them to give you a look. so make that your #1 concern. everything else should serve that. if protecting your software prevents a few people who never were going to buy your software anyway, while alienating real potential customers, then you've failed.