DirectX - Microsoft's framework for games and graphics - used to be a heavy user of COM.
Since I haven't touched DirectX from a loooong time, I went looking for C++ sample code for the latest DirectX version (v12) out of curiosity if it's still using COM.
And sure enough, it's
still using
ComPtr safe pointer wrappers over DirectX COM interfaces!
It also looks like WinRT - the successor to Win32 API - is also based on COM according to
its wikipedia article .
So yeah, COM seems to be doing surprisingly well in the Windows ecosystem, both at the system layers and at the application layers. Or atleast a lot better than RMI.
Edit:
It occurs to me that system and game programming are both rather specialized areas and represent relatively lesser number of developers.
What about the majority of Windows application developers?
I suspect they are using higher level technologies like C# / VB.NET on .NET and don't use COM much. Just like the average
Java developer doesn't use RMI much directly.