I find the best way is to store an encrypted registration key in the registry, this is generated by information from the customer, i.e their name, date of birth, the date the order was placed, that sort of thing. That way it stops them registering it on their PC with out the correct registration code. The only problem with this is that they can also pass on the registration key with the exe, but it does make it harder.
Matt