.NET and C# are wonderful technologies and a joy to develop for. Then you add things like the inclusion of functional programming, LINQ, Task Parallel Library and other advances and I fail to see how anyone could compare it to C++ let alone C.
As for the original question, its Microsoft's own fault. All they had to do was include the framework in one of the service packs for XP. Those things were huge and another 20MB wouldn't make a difference. Everyone installed them. Having a .NET CLR available on client pc's would make a lot more developers use it in their apps. Instead, it was not a system component until Vista and by then it was too late.
This has affected not just 3rd party devs but Microsoft itself. Office, Windows and other flagship desktop products do not use .NET. The reason for this is mostly that the different groups do not want to take a dependency on each other due to different release schedules, so we end up with a brand new OS with a completely rewritten graphics stack that doesn't use it. Microsoft uses .NET heavily in server products such as SQL Server, ASP.NET etc where it truly shines. Its a pity the client is still stuck with Win32 which needs to die a horrible death very soon.
I have high hopes that the next new OS from Microsoft (Midori - http://arstechnica.c...ust-experimental.ars
), based on Singularity (http://channel9.msdn...ngularity-Revisited/
) sees light of day soon and is not abandoned. It will finally ditch Win32 and the unmanaged baggage which exists solely for backwards compat.