There are lots of software licensing systems out there. None are uncrackable but you really have to consider how hard people are likely to be prepared to try to pirate your app. The .NET Framework includes XML-based licensing functionality and Infralution Licensing System is a relatively cheap, simple-to-use licensing component based on that. It's a relatively small financial investment for relatively good protection designed specifically for .NET apps. Of course, you then have to invest the time and resources to manage the licenses.