See the question and my original answer on StackOverflow

A quick answer on the last question: COM is far from being obsolete. Almost everything in the Microsoft world is COM-based, including the .NET engine (the CLR), and including the new Windows 8.x's Windows Runtime.

Here is what Microsoft says about .NET in it latest C++ pages Welcome Back to C++ (Modern C++):

C++ is experiencing a renaissance because power is king again. Languages like Java and C# are good when programmer productivity is important, but they show their limitations when power and performance are paramount. For high efficiency and power, especially on devices that have limited hardware, nothing beats modern C++.

PS: which is a bit of a shock for a developer who has invested more than 10 years on .NET :-)