2014-02-03 3 views
1

Я пытаюсь преобразовать документы Office, используя Office.Interop, запущенный под отдельной службой Windows. Эта служба работает под определенной учетной записью (в дальнейшем - имя пользователя).Доступ к Office Interop запрещен при доступе

Для этой учетной записи установлены все права доступа к папке. И когда я пытаюсь создать любого из приложения Microsoft Office (например, вар приложение = новый Excel.Application()), то мой код не исключение:

Retrieving the COM class factory for component with CLSID {XXXX} failed due to the following error: E_ACCESSDENIED.

Ок, но я уже настроил разрешение DCOM для этого CLSID! Я открываю dcomcnfg.exe, выбираю компонент с этим CLSID, открывая настройки, безопасность и вижу, что у пользователя этой службы есть все права для этого компонента.

Почему это исключение выбрасывается?

+0

Я не думаю, что вы можете (редактировать: _should_) использовать офисные вещи из службы. В коммерческой компании Aspose есть еще несколько [подробно о том, почему] (http://www.aspose.com/docs/display/wordsnet/Why+not+Automation). –

+0

@UweKeim Конечно, вы можете использовать межсетевой экран Office в службе окна. – Letseatlunch

+0

@UweKeim Да, вы можете! Мы продаем программное обеспечение, которое включает это. Но он не поддерживается microsoft –

ответ

0

Ocka, ребята, я нашел ответ. 1) Убедитесь, что у вас установлена ​​правильная версия Office 2007 2) Убедитесь, что вы установили PDF \ XPS addin 3) Только офис и его добавление установлены, вы должны запустить DCOMCNFG и выбрать My Computer-> DCOM конфигурации. Как оказалось, после установки Office в реестре нет сопоставлений между CLSID и AppID. 4) Закрыть окно dcomcnfg. Теперь в реестре есть правильные сопоставления. Вы должны получить все, что связано с офисом (его идентификатор, например {XXXXXXXXXXX ...}) в HKCR \ AppID и HKCR \ CLSID 5) Для всех этих идентификаторов вы должны предоставить доступ, это может быть достигнуто с использованием этого алгоритма: * открытого HKCR \ AppID {идентификатор} ключ * Настройка LaunchPermission и ActivatePermission значения (код, чтобы сделать это найти там в StackOverflow) * Установите значение "RunAs" как "Interactive User"

Ocka, ваша автоматизация делопроизводства должна работать правильно, если я не забуду какой-то шаг ..