Использование компонента Excel работает из приложения, но не из службы Windows - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть служба Windows .NET, которая самостоятельно размещает службу WCF. Затем эта служба WCF вызывает старый компонент COM, написанный на ATL в Visual Studio 6. Затем этот компонент COM создает компонент Excel.Application COM. Он вызывает различные методы в этом компоненте Excel COM, а затем вызывает SaveAs для него, чтобы завершить сохранение документа. Этот вызов метода SaveAs не выполняется. Служба Windows работает как локальная система, поэтому я подумал, что это может быть проблема с правами доступа. Поэтому я изменил службу Windows, чтобы она работала под моей учетной записью пользователя (просто зайдите в services.msc, остановите службу, свойства, войдите в систему изменений и перезапустите службу). Тем не менее, та же проблема сохраняется.

Я создаю быстрое тестовое приложение .NET Win Forms, а затем запускаю компонент COM. Это отлично работает. Приложение работает под моей учетной записью, поэтому я подумал, что запуск службы Windows под моей учетной записью будет иметь тот же эффект.

В чем проблема со службой Windows (даже если она работает под моей учетной записью)? И как мне это решить?

1 Ответ

1 голос
/ 06 сентября 2011

Поскольку Windows Vista Service не разрешено выполнять «настольные функции» (безопасность и т. Д.) ... дополнительно автоматизация Office НЕ поддерживается MS в этом сценарии ...

Вы можете найти способ обойти все это, НО я настоятельно рекомендую пойти другим путем - для файлов Office есть бесплатный SDK от MS, который вы можете использовать под названием OpenXML SDK 2.0 - вы можете скачать его здесь .

ЕСЛИ возможностей недостаточно, существуют другие бесплатные и коммерческие SDK - если вы порекомендуете что-то, это поможет узнать больше о ваших требованиях.

...