regsvr32 просто запускает функцию регистрации, которую предоставляет ваша DLL. Если информация о регистрации в вашей DLL неверна, regsvr32 ничего не может с этим поделать. Если вы не уверены, что искать, вы можете попробовать запустить Regmon (by sysinternals) с установленным фильтром * regsvr32 * или около того, а затем найти GUID, которые были зарегистрированы. Затем найдите их в подробном представлении DCOMCNFG. Вы, вероятно, найдете его там, если regsvr32 преуспел. Это даст вам представление о корне проблемы, хотя фактическое решение зависит от того, что не так в вашей регистрационной информации.
Другим удаленным вариантом является конфликт между 32-64 битами, когда regsvr32 запускается в 32 битах, а DCOMCNFG в 64 битах или наоборот. Я не уверен, что DCOMCNFG показывает в таком случае - у меня никогда не было этой проблемы, но есть разные кусты реестра для 32 и 64 бит, и, возможно, вы не ищете в правильном месте.