Автоматизация Office через службу Windows на сервере 2008
-
06-07-2019 - |
Вопрос
У нас есть служба Windows, которая работает на сервере 2003.Он открывает исходный документ Word с помощью Word Interop, а затем выполняет с ним некоторые действия.То же самое происходит и с файлами Excel и PowerPoint.
Недавно мы попытались перенести эту службу на компьютер с Windows 2008 Server и столкнулись с серьезными проблемами.
Comexception at microsoft.office.interop.excel.workbooks.open comexception на microsoft.office.interop.word.documents.open
Я получаю вышеуказанные исключения, когда служба Windows работает на сервере 2008.Если посмотреть в диспетчере задач, приложение загружается нормально, но вскоре снова закрывается.
Я читал о том, что в Vista и Server 2008 больше нет Session0, и пытался соответствующим образом изменить свойства безопасности Office DCOM, включая изменение личности пользователя, запускающего их, на «Интегрированный», но безрезультатно.
Кто-нибудь знает, возможно ли это вообще?Это фундаментальный аспект нашей системы, и поэтому мы должны быть в состоянии это сделать.
Спасибо
Решение
У меня были проблемы с автоматизацией Office из службы Windows под Windows Server 2008, хотя под Windows Server 2003 все работает нормально.Проблема также возникает при вызове Open, так что это может быть та же проблема.
Я попробовал последовать совету, данному Х. Огавой в эта тема MSDN, и, похоже, это сработало.Это странно, но респект господину.Огаве за это открытие.
Краткое описание «взлома Огавы»:создайте папку на рабочем столе для системного профиля, например:
C:\Windows\System32\config\systemprofile\Desktop
и, если вы работаете на 64-битной машине, создайте другой один, как:
C:\Windows\SysWOW64\config\systemprofile\Desktop
Кроме того, папкам необходимо разрешение на запись для любого пользователя, который «управляет» Office.
[Редактировать:исправленный URL ссылки]
[Редактировать 2:уточнил, что в 64-битной Windows нужны обе папки, а не только WOW64]
Другие советы
Если вы используете Apache, вам также может потребоваться выполнить следующие действия, чтобы заставить MS Word работать правильно (наряду со всем, что описано в других ответах):
Ниже приведен снимок экрана, показывающий два диалога, которые вам нужно будет открыть:
Для Апача:
Службы-> Apache-> Щелкните правой кнопкой мыши (Свойства) -> Вкладка «Вход в систему».
MS Word:
Запустите dcomcnfg.exe->Корень консоли->Службы компонентов->Компьютеры->Мой компьютер->Конфигурация DCOM->Найти приложение Microsoft->Правый клик (Свойства)->Вкладка «Идентификация».
**если вы не можете найти MS Word, убедитесь, что вы запускаете правильную конфигурацию DCOM (64-битная или 32-битная) в зависимости от того, какая версия Office у вас установлена.
Здесь есть два варианта: вы можете настроить Apache на использование Локальная системная учетная запись и установите флажок РАЗРЕШИТЬ взаимодействие с рабочим столом.Если вы это сделаете, вам необходимо установить Личность для MS Word Интерактивный пользователь.
В противном случае вам необходимо назначить одного и того же пользователя (в идеале пользователя, вошедшего в систему), как показано на рисунке.
Что ж, вам нужно будет запустить «MMC -32» (командная строка), чтобы запустить 32-битную MMC, а затем добавить сервисы компонентов (File> Добавить / удалить меню Snap-Ins ')
затем следуйте одной из этих инструкций:
Это также происходит в Vista с включенным UAC.Возможно, вы захотите попробовать установить удостоверение DCOM в качестве учетной записи администратора и проверить его еще раз.
Недавно у меня также возникла эта проблема на компьютере с XP, когда я пытался открыть книги в Excel через службы взаимодействия, но пока не нашел обходного пути.Я сам хотел бы получить любую другую информацию, которую сообщество могло бы высказать...