One thing to keep in mind is that you want to do this in a way that makes business sense. And to do that, you need to define your goals. So, exactly what are your goals?
Preventing piracy? That goal is not achievable. Even native code can be decompiled or cracked; the multitude of warez available online (even products like Windows and Photoshop) is proof of that.
If you can't prevent piracy, then how about merely reducing it? This, too, is misguided. It only takes one person cracking your code for it to be available to everyone. You have to be lucky every time. The pirates only have to be lucky once.
I put it to you that your goal should be to maximize profits. You appear to believe that stopping piracy is necessary to this endeavor. It is not. Profit is simply revenue minus costs. Stopping piracy increases your costs, and so reduces that side of the equation. Protecting your product also does nothing to increase your revenue. I know you look at all those pirates and see all the money you could make if only they would pay your license fees instead, but that will never happen. If pirates are unable to crack your security, they'll either find a similar product that they can crack or do without. They will never buy it instead.
Additionally, securing your product actually reduces revenue. There are two reasons for this. One is that a small percentage of customers will have trouble with your activation or security, and will therefore decide not to buy again or ask for their money back. The other is that a small percentage of people actually try a pirated version of software to make sure it works before buying. So limiting the pirated distribution of your product (if you are somehow able to succeed at that) prevents these people from ever trying your product, and so they will never buy it.
A better strategy is to assume that your product will be pirated, and think about ways to take advantage of the situation. A couple more links on the topic:
http://stackoverflow.com/questions/2338337/how-do-i-prevent-my-code-from-being-stolen/2338556#2338556
http://stackoverflow.com/questions/651291/securing-a-net-application/651375#651375