Disclaimer: I am a developer on this product so I may be a bit biased.
You should check out the new functionality available in Dotfuscator Community Edition shipping in Visual Studio 2010 (now out in Beta). It provides a free code injection engine to insert usage tracking functionality directly into your .NET binaries. This will work on any .NET application from .NET 1.0 through 4.0. Since it is a post compile code injection solution you can even accomplish basic run time usage and feature tracking without modifying your source code.
We are writing a number of blog posts covering these topics. A summary of the new features is here What Is Runtime Intelligence .
An overview blog post on how to implement is at What's New with Dotfuscator in Visual Studio 2010 Beta 1 .
I have also started a more in depth series, covering details and some usage ideas, with the first article here Correlating Downloads to Usage With Visual Studio 2010 .
There is also a commercial product with more feature than are available in the free version. In addition we also provide similar functionality for Java applications, using our DashO product as the code injection engine.