COM Exception 0x800A11F9 - Невозможно активировать приложение - PullRequest
3 голосов
/ 22 апреля 2010

У меня есть проект C # 2.0 (WinForms), в котором я пытаюсь активировать Word 2003 (Word установлен в системе).Используя следующий код:

private void ActivateWord()
{
    this.Activate();

    if (m_WordDocument != null)
    {
        try
        {
            m_WordDocument.Activate();

            if (m_WordDocument.Application != null)
            {
                m_WordDocument.Application.Visible = true;
                m_WordDocument.Application.Activate();
            }
        }
        catch (COMException comEx)
        {
            ShowError(this, comEx.Message, false);
        }
    }
}

Когда мое приложение выполняет m_WordDocument.Application.Activate (), я получаю исключение COM 0x800A11F9.

Stacktrace:
    "System.Runtime.InteropServices.COMException (0x800A11F9): Cannot activate application  
        at Word.ApplicationClass.Activate()  
        at Roxit.SquitXO.GUI.DocumentCreatie.frmSelectVeld.ActivateWord()"

В чем может быть причина этой проблемы?

Ответы [ 3 ]

5 голосов
/ 04 ноября 2010

COM-ошибка 0x800A11F9 - это общеизвестная проблема с правами доступа , возникающая, когда неимущий пользователь (например, Network Service) пытается активировать приложение Office.

В вашем случае проблема не может исходить от IIS, поскольку вы разрабатываете приложение WinForms. Скорее всего, ваше приложение запускается службой Windows, работающей под учетной записью пользователя Local Service или Network Service.

Если это действительно так, вам нужно изменить учетную запись пользователя, используемую службой, на вкладке Log on диалогового окна свойств службы.

РЕДАКТИРОВАТЬ: Возможно, вы захотите попробовать поместить код, который активирует Word в COM + компонент и настроить удостоверение компонента так, чтобы он работал под учетной записью пользователя, которая может запускать Word .

0 голосов
/ 08 ноября 2010

Если это проблема с разрешениями, и вы не можете заставить Sitecore работать как пользователь с достаточными разрешениями, возможно, вы могли бы написать другую службу («WordService») для вашего приложения Sitecore для отправки запросов.Тогда WordService может работать как пользователь с более привилегированными правами, делать свои вещи с Word, а затем, например, записывать заполненный файл Word в известное место, к которому может получить доступ SiteCore, или что угодно, что вы хотите.

0 голосов
/ 04 ноября 2010

Просто мысль, что я видел подобную ошибку при выполнении автоматизации слова на сервере (что мы больше не делаем из-за нестабильности), однако в то время это было вызвано проблемами с правами доступа из учетной записи ASP.net, я знаю, вы работаете в winforms, но это может быть связано с разрешениями?

...