Я разработал веб-сайт, который позволяет пользователям загружать офисные документы, а затем использует объектную модель офиса для преобразования документа в файл HTML, который затем отображается в iFrame.
Я, конечно, включил ссылки на Office.interop.word, и этот сайт отлично работает на моей машине разработки. Когда я загрузил его на свой рабочий сервер, сайт работает нормально, пока я не попытаюсь загрузить документ. Сначала я получил аналогичную ошибку, в которой говорилось, что «COM-объект не зарегистрирован». Я понял, что Word не установлен на моем рабочем сервере. Итак, я установил слово, и теперь , когда сервер пытается получить доступ к объектной модели слова, я получаю следующую ошибку:
Получение фабрики классов COM для компонента с CLSID {000209FF-0000-0000-C000-000000000046} не удалось из-за к следующей ошибке: 80070005 Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
Я поискал в реестре соответствующий CLSID и нашел соответствующую папку. Я добавил полный контроль к учетной записи IUSR_, и из-за постоянства ошибки я в конечном итоге добавил полный контроль для «всех» и обеспечил наследование этих разрешений до остальной части папки.Затем я добавил полный контроль над IUSR_ и снова, в конце концов, добавил полный контроль для «всех» в свою папку Microsoft Office.
Я не знаю, какие еще разрешения нужно предоставить и где, чтобы эта ошибка «Доступ запрещен» исчезла. Я, должно быть, даю их не в том месте, потому что, насколько я знаю, я не могу быть более снисходительным, чем «Все» «Полный контроль».
Может ли кто-нибудь пролить свет?
Посмотрите в средстве просмотра событий, в разделе Журналы Windows, Система, на сервере, на котором установлено Word. Видите ли вы зарегистрированное событие, которое выглядит примерно так:
Разрешение по умолчанию для компьютера настройки не разрешают локальную активацию разрешение для COM-сервера приложение с CLSID {148BEE7F-6123-41EE-8CCA-E390902BD0D8} пользователю SomeMachine\SomeUser SID (S-1-5-21-483881670-2168941642-1987552629-1003) с адреса LocalHost (с использованием LRPC). Это разрешение безопасности может быть изменено с помощью служб компонентов административный инструмент.
Если это так, запустите DCOMCNFG.EXE и перейдите в «Службы компонентов», «Компьютеры», «Мой компьютер» (или любое другое имя), «Конфигурация DCOM» (и вы можете просто ответить «Нет», если вас спросят, хотите ли вы что-то исправить) и если сообщение журнала событий относится к приложению, затем найдите его по имени в сообщении журнала событий, здесь по имени элемента, и если сообщение журнала событий предназначено для CLSID (как в приведенном выше примере), затем найдите его его CLSID "{148B...}" (это просто случайный CLSID, который я вставил - возможно, он будет соответствовать вашему 000209FF... выше), и выберите Дополнительные действия... Свойства на вкладке Безопасность.
Здесь вы можете выбрать [x] Настроить, а затем Изменить, чтобы добавить разрешение для соответствующей учетной записи пользователя на активацию и доступ к требуемому приложению или классу DCOM.
Это всего лишь предположение, но попробуйте его или что-то в этом роде (например, предоставление доступа к CLSID через DCOMCNFG).