Одной вещью, которая не была упомянута к настоящему времени, является использование представлений для обеспечения логического изображения данных к конечным пользователям для специального создания отчетов или подобный.
Это имеет два достоинства:
Даже со специальным созданием отчетов об иногда signicantly легче предоставить представление системе отчетности, которая содержит relveant данные, аккуратно разделяя производство данных из представления того же.
Я бы не рекомендовал изменять файл манифеста приложения; это кажется довольно хрупким и будет работать, только если он находится в доступном для записи месте.
При запуске процесса манифест приложения используется для создания «контекста активации», который проталкивается как контекст активации всего процесса. Но каждый поток также имеет стек контекста активации, которым можно напрямую управлять. При поиске регистрационных данных COM операции в данном потоке смотрят как на самый верхний контекст в стеке, так и на контекст активации всего процесса.
Рекомендация состоит в том, что каждый раз, когда код подключаемого модуля должен вызывать COM, манифест конкретного подключаемого модуля должен быть активирован в потоке. Проще всего это сделать одним из двух способов:
Вставьте специфичный для подключаемого модуля манифест как манифест ID2 в подключаемый модуль и скомпилируйте с определенным макросом ISOLATION_AWARE_ENABLED . Это в основном обертывает общие API-интерфейсы Windows, которым нужен контекст из манифеста для автоматической активации и деактивации правильного контекста активации вокруг вызова.
Активация / деактивация правильного контекста активации в потоке вокруг всех точек входа в плагин. Это делается через API контекста активации . Это проще всего сделать с помощью объекта управления контекстом активации .