Автоматизация Office через службу Windows на сервере 2008
У нас есть служба Windows, которая работает на сервере 2003. Он открывает исходный документ 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, но безрезультатно.
Кто-нибудь знает, возможно ли это вообще? Это фундаментальный аспект нашей системы, и поэтому мы должны уметь это делать.
Спасибо
Ответы
Ответ 1
У меня возникли проблемы с автоматизацией Office из Windows-службы под Windows Server 2008, хотя это хорошо работает в Windows Server 2003. Проблема также возникает при открытии вызова, так что это может быть та же проблема.
Я пробовал следовать рекомендациям H Ogawa в этот поток MSDN, и он, похоже, сработал. Это причудливо, но, кстати, г-ну Огаве, за то, что он открыл его.
Резюме "Ogawa Hack": создать папку рабочего стола для системного профиля, например:
C:\Windows\System32\config\systemprofile\Desktop
и, если он запущен на 64-битной машине, создайте еще одну, как:
C:\Windows\SysWOW64\config\systemprofile\Desktop
Кроме того, папке требуется разрешение на запись для любого пользователя, "управляющего" Office.
[Изменить: исправленный URL ссылки]
[Edit 2: выяснено, что в 64-битной Windows вам нужны обе папки, а не только WOW64)
Ответ 2
Если вы используете Apache, вам также может потребоваться выполнить следующие шаги, чтобы заставить MS Word работать правильно (вместе со всем, о чем говорится в других ответах):
Ниже приведен скриншот, показывающий два диалоговых окна, которые вам нужно поднять:
![enter image description here]()
Для Apache:
Службы- > Apache- > Щелкните правой кнопкой мыши (Свойства) → Вход в систему
MS Word:
Запустить dcomcnfg.exe- > Консоль Root- > Службы компонентов- > Компьютеры- > Мой компьютер- > Конфигурация DCOM- > Найти приложение Microsoft- > Щелкните правой кнопкой мыши (Свойства) → вкладка Identity
**, если вы не можете найти MS Word, убедитесь, что вы запускаете правильную конфигурацию DCOM (64 бит или 32 бит) в зависимости от того, какую версию Office вы установили.
Здесь есть два варианта: вы можете установить Apache для использования локальной системной учетной записи и установить флажок в поле ALLOW desktop. Если вы это сделаете, вам необходимо установить для Identity для MS Word значение Интерактивный пользователь.
В противном случае вам необходимо установить оба параметра одному пользователю (в идеале, пользователю, который вошел в систему), как показано на рисунке.
Ответ 3
Ну,
вам нужно будет запустить "MMC -32" (командную строку) для запуска 32-битной MMC, а затем добавить меню "Службы компонентов" ( "Файл" > "Добавить/удалить оснастки" )
затем следуйте одной из следующих инструкций:
http://theether.net/download/Microsoft/kb/288366.html
Ответ 4
Это также происходит в Vista с включенным UAC. Возможно, вам захочется установить учетную запись DCOM в качестве учетной записи администратора и снова протестировать ее.
Я также недавно начал эту проблему в XP-контейнере, пытаясь открыть книги в Excel через службы взаимодействия, но пока не нашел обходного пути. Я сам хотел бы, чтобы другие идеи, которые сообщество могло бы выбросить там...