Взаимодействие Powerpoint завершается с ошибкой в ​​службе Windows, но прекрасно работает в приложении Windows Form - PullRequest
4 голосов
/ 08 апреля 2009

Я написал приложение для просмотра папки, и всякий раз, когда в нее помещается документ PowerPoint, он просматривает слайды и генерирует png-изображения каждого слайда. Это прекрасно работает в приложении Windows Form, но я поместил точно такой же код в службу Windows, использовал тот же тестовый файл, и он не может открыть его со следующей ошибкой:

Ошибка: PowerPoint не может открыть файл. в Microsoft.Office.Interop.PowerPoint.Presentations.Open (имя файла, MsoTriState ReadOnly, MsoTriState без названия, MsoTriState WithWindow) -2147467259 Com Ошибка

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

Есть предложения?

Ответы [ 4 ]

4 голосов
/ 15 июля 2010

Парень по имени "Гэри МакГилл" опубликовал решение, которое мне очень помогло (по вопросу, который очень похож):

Автоматизация Office через службу Windows на сервере 2008

работает как брелок (и мне даже не нужно было ставить флажок «Разрешить службе взаимодействовать с рабочим столом» на вкладке «Вход в систему»)

1 голос
/ 25 августа 2011
  • Перейдите в Службы компонентов> Компьютер> Мой компьютер> Конфигурация DCOM.
  • Перейдите в DCOM «Microsoft PowerPoint Slide» и выберите свойства.
  • Перейдите на вкладку «Идентификация» и измените права наследования пользователя на пользователя с сетевой службой / привилегиями доступа.

Взаимодействие PowerPoint не должно пытаться открыть пользовательский интерфейс, но это тоже может быть проблемой.

1 голос
/ 08 апреля 2009

Невозможно сказать, в чем проблема, без гораздо большего количества информации. Это может быть любое количество вещей. Если установлена ​​операционная система XP или более ранняя, то профиль пользователя не будет загружен при запуске службы, поэтому PP может не иметь доступа к необходимой информации. PP может пытаться выполнить некоторую сложную операцию, которая предполагает, что он находится в интерактивном сеансе. COM-компонент, который использует PP, возможно, не сможет инициализироваться из-за отсутствия профиля пользователя. Настоящая ошибка может даже не быть проблемой безопасности, разработчики нередко используют ERROR_ACCESS_DENIED или ERROR_OUT_OF_MEMORY в качестве перехвата всех неожиданных ошибок.

Но реальная проблема заключается в том, что PowerPoint - это, в основном, пользовательское наземное приложение - его не следует использовать в сервисе. Настройка службы для взаимодействия с рабочим столом - плохое решение. Даже если он работает, он просто замаскирует более глубокую проблему, а также сделает бессмысленным запускать его как сервис. Существует ряд утилит и компонентов, которые можно использовать для преобразования слайдов PowerPoint в файлы изображений. Быстрый поиск в Google возвращает множество возможностей, которые выглядят более подходящими для использования в службе, и большинство из них довольно дешевы.

0 голосов
/ 08 апреля 2009

Попробуйте настроить службу для взаимодействия с рабочим столом.

...