COM 'abstracts' object implementation details thus enabling a program to not have to worry, or make assumptions, about how (or where) an object is implemented - could be a DLL, EXE or remote machine; it shouldn't matter.
However, when requesting an object to be instantiated you can insist you require an 'in process' (ie DLL) object. This will either succeed or fail - so you can (sort of) tell whether a DLL is registered or not.
This does rely on knowledge of which DLLs implement which objects of course.