У меня есть COM-компонент ATL C++ in-proc. Этот компонент не предназначен для внешнего использования - мне он нужен только для использования в нашем приложении.Можно ли запретить вставлять мой компонент in-proc в COM +?
Время от времени пользователи помещают его в COM +, и это приводит ко всем видам странных ошибок - «Доступ запрещен» и т. Д., О которых я бы хотел просто не слышать. Лучшим способом было бы сделать что-то, что запрещало бы поместить компонент в COM +, чтобы его можно было использовать только как сервер proc. Есть ли способ сделать это?
Я проверил все, что вы предлагаете, но COM + с удовольствием добавит компонент. Я предполагаю, что это будет непригодно - CoCreateInstance() потерпит неудачу с различными жалобами, такими как «интерфейс не поддерживается», - но на самом деле это та же самая проблема, с которой я начинал. Поэтому вместо того, чтобы фиксировать проблему, я сузил поверхность, из которой она могла исходить. Обычно пользователи добавляют наш компонент, потому что его ProgID находится в списке зарегистрированных компонентов и похож на ProgID других наших компонентов. Поэтому они просто «добавляют все». Я изменил код регистрации реестра, чтобы он предоставлял ClassId ... – sharptooth
... и надеюсь, что проблема никогда не будет беспокоить нас снова. Большое спасибо за предложения в любом случае - теперь мы знаем, что эти шаги на самом деле не решают проблему. – sharptooth
Спасибо за последующую информацию! –