Nope, you can use P/Invoke:
Source:
http://www.ondotnet.com/pub/a/dotnet/2002/02/18/cominterop.html
While Microsoft has incorporated much functionality into the .NET Framework
class libraries, significant additional functionality resides outside of the
managed world of .NET. COM interoperability is necessary in order to access
native system APIs, such as shell integration, DirectX, Microsoft Office,
and the Windows Registry, as well as custom legacy COM objects. COM
interoperability in .NET can be a tricky issue for developers, who have to
deal with issues such as figuring out the appropriate data types to use and
marshalling data between managed and unmanaged code.
..NET provides access to COM components through its P/Invoke facility.
P/Invoke allows developers to invoke native unmanaged methods from managed
code. In this article, we will walk through an example of COM
interoperability from within C#.