<p>My company releases a small software product for which I've recently been taking over the development side.  It is a C# Windows Forms application.</p>

<p>One of the things I've noticed is that much of the information about how the software is used is filtered through my superiors and I get the feeling that I'm missing important detail in some of the messages.</p>

<p>I realise I'll have to work on the management issues with this situation, however in order to give another view on the problem I've been considering a technological solution.  Perhaps something similar to the "Microsoft Customer Experience Improvement Program".</p>

<p>I was wondering if anyone out there had any experience or advice monitoring and reporting on user behaviour in their applications?</p>

I would suggest you get your application to write its "usage information" somewhere and then,
with the users permission
, transmit it electronically every so often.
Note the emphasis above.  Depending on your jurisdiction, you could get into serious trouble transmitting any sort of data from someone else's computer without permission.
You're more likely to get permission if:
1/ You make it clear, on install or update, that your program will collect information and transmit it only with permission.
2/ You explain clearly what the information is and that it only holds "usage information", nothing that can be traced back to the user of the software (NO serial numbers, etc).
3/ You request permission to transmit infrequently.  If I had an obnoxious program that asked me daily, I'd soon stop using it altogether.