Консольное приложение C #, которое выполняет Excel Interop - сбой при запуске по расписанию Task -System.UnauthorizedAccessException - PullRequest
4 голосов
/ 09 августа 2010

Как гласит заголовок, у меня есть консольное приложение C #, которое использует взаимодействие для открытия Excel и создания новой книги.Код работает нормально при запуске консольного приложения через командную строку.Однако это исключение выдается при запуске приложения консоли через запланированное задание:

System.UnauthorizedAccessException: Retrieving the COM class factory for component   with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005

Оно вызывается из следующего вызова:

_xlApp = new Excel.Application()

Назначенное задание настроено на использование моих учетных данных(Я администратор).Основываясь на других форумах, я убедился, что предоставил полный контроль своей учетной записи в Службы компонентов -> Компьютеры -> Мой компьютер -> Конфигурация DCom -> Приложение Microsoft Excel, но не повезло.

Я на Windows 7 Enterprise 64 бит.Не уверен, каким должен быть следующий шаг, любая помощь приветствуется

Ответы [ 4 ]

2 голосов
/ 18 августа 2010

В итоге я написал службу Windows для вызова библиотеки, содержащей код генерации Excel. Это исправило ошибку. Однако при вызове метода workbook.Save () было еще одно исключение COM. Что бы я ни пытался, эта ошибка не исчезнет. Я прочитал другой пост, в котором говорилось, что это была мера безопасности и, следовательно, умышленно.

Однако, вызывая книгу. SaveAs () даст тот же результат и прекрасно работает при вызове из службы Windows.

Спасибо за вводный фанк гриб. Надеемся, что этот пост будет полезен кому-то, кто борется с автоматизацией Excel Interop.

2 голосов
/ 09 августа 2010

Ошибка 80070005 - это ошибка COM Access Denied .Вы уверены, что ваши учетные данные могут создавать экземпляр Interop Library?Проверьте эту ссылку и выполните некоторые шаги отладки.( Я знаю, что вы сказали, что уже сделали DCOMConfig, но в этой ссылке есть больше тестовых сценариев, и, надеюсь, что-то здесь вам поможет )

0 голосов
/ 17 апреля 2014

У меня тоже была эта проблема - оказалось, что на запланированном задании мне нужно было поставить галочку «Запускать с наивысшими привилегиями» на вкладке «Общие» настройки задания. Это решило проблему - это было так просто! Надеюсь, это поможет кому-то еще.

0 голосов
/ 21 октября 2013

У меня была похожая проблема, я решил проблему, выполнив следующие шаги.

Конфигурация DCOM

  1. Нажмите Пуск -> Выполнить
  2. Введите DCOMCNFG и нажмите ОК. Откроется окно DCOMCNFG.
  3. Перейдите вниз по дереву к корневому каталогу консоли -> Службы компонентов -> Компьютеры -> Мой компьютер
  4. щелкните правой кнопкой мыши «Мой компьютер» и выберите свойства
  5. Выберите вкладку «Свойства по умолчанию»
    • Включить Распределенный COM на этом компьютере - опция отмечена
    • Уровень проверки подлинности по умолчанию - Установите для подключения
    • Уровень олицетворения по умолчанию - установите для идентификации
  6. Выберите вкладку «Безопасность COM»
  7. Нажмите на «Права доступа», «Изменить по умолчанию». а. Добавьте «Аноним», «Все», «Интерактив», «Сеть», «Система» с установленными разрешениями «Локальный» и «Удаленный доступ».
  8. Нажмите на Разрешения на запуск и активацию 'Изменить по умолчанию а. Добавьте «Аноним», «Все», «Интерактивный», «Сеть», «Система» с установленными разрешениями «Локальный» и «Удаленный доступ».
  9. Нажмите OK
  10. Закрыть окно DCOMCNFG

Позже я получил исключение при открытии Excel. Поэтому убедитесь, что на сервере доступны следующие пути.

  • C: \ Windows \ SysWOW64 \ Config \ systemprofile \ Desktop
  • C: \ Windows \ SysWOW64 \ Config \ systemprofile \ AppData \ Roaming \ Microsoft
  • C: \ Windows \ SysWOW64 \ Config \ systemprofile \ AppData \ Local \ Microsoft

Это может помочь парням вроде меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...