Лучше всего, чтобы поставщик исправил компонент. В конце концов, если он не будет обрабатывать несколько клиентов, могут быть и другие ошибки . Если вы не можете сделать это, попробуйте другие вещи.
С внутрипроцессными COM-объектами у меня была возможность вручную загрузить dll и получить доступ к интерфейсам напрямую, не проходя через COM.
Я сам этого не делал с помощью внепроцессного COM, но есть некоторые вещи, которые вы можете попробовать. В конечном итоге библиотека - это просто процесс, сидящий там и получающий сообщения, которые вызывают функции.
Возможно, вы сможете вручную запустить новую копию процесса для каждого клиента и затем отправить ему сообщения. Вы можете столкнуться с некоторыми сбоями с этим. Например, процесс может проверить, запущен ли он, и отказать в запуске или быть недовольным.
Если у вас есть известный верхний предел числа клиентов, другой подход, который вы могли бы рассмотреть, - сделать несколько копий исходного файла .exe и затем использовать двоичное исправление (что-то похожее на библиотеку обходов от Microsoft Research) для переопределите функции регистрации COM и зарегистрируйте каждую копию как отдельный объект COM.