Автоматизация Office через службу Windows на сервере 2008 - PullRequest
21 голосов
/ 17 июня 2009

У нас есть служба Windows, которая работает на 2003 Server. Он открывает исходный документ Word, используя Word Interop, а затем делает что-то с ним. Это также относится и к файлам Excel и PowerPoint.

Недавно мы попытались перенести этот сервис на компьютер с Windows 2008 Server, и у нас возникли реальные проблемы с ним.

COMException в Microsoft.Office.Interop.Excel.Workbooks.Open COMException в Microsoft.Office.Interop.Word.Documents.Open

Я получаю вышеупомянутые исключения, когда служба Windows работает на 2008 Server. Глядя на диспетчер задач, приложение загружается нормально, но вскоре после этого снова закрывается.

Я читал о Vista и Server 2008, у которых больше нет Session0, и попытался соответствующим образом изменить свойства безопасности Office DCOM, включая изменение идентификатора пользователя, выполняющего их, на Integrated, но безрезультатно.

Кто-нибудь знает, возможно ли это вообще? Это фундаментальный аспект нашей системы, и поэтому мы должны быть в состоянии сделать это.

Спасибо

Ответы [ 4 ]

61 голосов
/ 05 ноября 2009

У меня были проблемы с автоматизацией Office из службы Windows под Windows Server 2008, даже если это хорошо работает в Windows Server 2003. Проблема также возникает при вызове Open, поэтому это может быть та же проблема.

Я попытался последовать совету, данному Х. Огавой в этой ветке MSDN , и это, похоже, сработало. Это странно, но спасибо мистеру Огаве за то, что он его обнаружил.

Сводка 'Ogawa Hack': создайте папку рабочего стола для профиля системы, как:

 C:\Windows\System32\config\systemprofile\Desktop

и , если вы работаете на 64-битном компьютере, создайте другой один, как:

 C:\Windows\SysWOW64\config\systemprofile\Desktop

Кроме того, для папок (ей) требуется разрешение на запись для любого пользователя, который «управляет» Office.


[Редактировать: исправленный URL-адрес ссылки]

[Правка 2: пояснил, что в 64-битной Windows вам нужны обе папки, а не только WOW64]

5 голосов
/ 30 мая 2014

Если вы используете Apache, вам также может понадобиться выполнить следующие шаги для правильной работы MS Word (вместе со всем, что описано в других ответах):

Ниже приведен скриншот, показывающий два диалоговых окна, которые вам нужно вызвать: enter image description here

Для Apache:

Сервисы-> Apache-> Правой кнопкой мыши (Свойства) -> Вкладка «Вход»

MS Word:

Запустите dcomcnfg.exe-> Корень консоли-> Службы компонентов-> Компьютеры-> Мой компьютер-> Конфигурация DCOM-> Найти приложение Microsoft-> ​​Щелкните правой кнопкой мыши (Свойства) -> Вкладка «Удостоверение»

** если вы не можете найти MS Word, убедитесь, что вы запускаете правильную конфигурацию DCOM (64-разрядная или 32-разрядная) в зависимости от установленной версии Office.

Здесь есть два варианта, вы можете настроить Apache на использование Локальная системная учетная запись и установить флажок РАЗРЕШИТЬ взаимодействие с рабочим столом. Если вы сделаете это, вам нужно установить Идентичность для MS Word на Интерактивный пользователь .

В противном случае вам нужно установить обоих пользователей (в идеале, пользователя, который вошел в систему), как показано на рисунке.

1 голос
/ 20 сентября 2013

Ну, вам нужно будет запустить «MMC-32» (командная строка) для запуска 32-разрядной MMC, а затем добавить службы компонентов (меню «Файл»> «Добавить / удалить оснастки»)

затем выполните одну из следующих инструкций:

http://theether.net/download/Microsoft/kb/288366.html

0 голосов
/ 17 июня 2009

Это также происходит в Vista с включенным UAC. Возможно, вы захотите попробовать установить удостоверение DCOM в качестве учетной записи администратора и протестировать его снова.

Я также недавно начал сталкиваться с этой проблемой на компьютере с XP, пытаясь открыть книги в Excel через службы взаимодействия, но пока не нашел обходного пути. Мне самому хотелось бы получить какие-либо другие идеи, которые сообщество может там продемонстрировать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...