If you have absolutely no other runtime details of the COM components inside the DLLs, you could read and parse the registry resource embedded in the DLL. It is what is used during registration to register the ProgID and CLSID.
If you do know some runtime details about the COM components (such as interfaces that the components implement), there may be a way to backtrack it through the registry. (Though I don't believe there is a way to do this without using the brute force method below.)
Then of course there is the brute force method of enumerating the specific trees in the registry and matching the paths of the DLLs in the server/handler entries.