Excel COM автоматизация перестает работать, когда пользователь выходит из системы - PullRequest
7 голосов
/ 20 ноября 2010

Я разработал серверное приложение, которое использует автоматизацию COM 2007 Excel для преобразования некоторых файлов xls.Он запускается как служба на экземпляре Windows Datacenter, работающем под своим собственным пользователем, и мне пришлось изменить настройки безопасности DCOM («запускать как интерактивный пользователь»), чтобы он работал.Я выхожу (через RDP), он перестает работать.Я вхожу, снова работает.

У кого-нибудь была такая же проблема?Я рад любой помощи на данный момент.

Ответы [ 5 ]

8 голосов
/ 22 ноября 2010

Хорошо, поэтому я не мог заставить Excel работать без интерактивного пользователя, никакой хитрости DCOMCNFG не хватило бы. Поэтому я просто настроил автологин для пользователя, под которым работает служба (см. Инструкции http://support.microsoft.com/kb/315231).

Это приводит к тому, что при загрузке сервера этот пользователь будет входить в систему в качестве сеанса интерактивной консоли. В отличие от сеансов RDP, это постоянно и делает Excel счастливым.

Другие подсказки для бедных душ, которые должны сделать что-то подобное:

  • создать папку C: \ Windows \ System32 [или SysWOW64] \ config \ systemprofile \ Desktop
  • убедитесь, что для пользователя настроен принтер по умолчанию
  • изменить настройки DCOMCNFG (mmc -32, добавить «службы компонентов») Excel для запуска с использованием интерактивной учетной записи
  • изменить глобальные настройки DCOM по умолчанию, чтобы разрешить локальный доступ, локальный запуск и локальную активацию для пользователя, для которого служба работает под

Удачи!

2 голосов
/ 02 апреля 2012

У меня была эта проблема, и я обнаружил, что ответ на самом деле в DCOM Configuration.

Я сделал следующее, чтобы решить эту проблему:

  1. Откройте ExcelСвойства DCOM
  2. Перейдите на вкладку Identity
  3. Выбрать This User
  4. Введите учетные данные того, кто имеет доступ к Excel

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

После этого я смог выйти из сервера, продолжая использовать библиотеки автоматизации COM COM Excel..

2 голосов
/ 21 ноября 2010

Есть такая вещь, как Службы Excel , которая должна позволять запускать Excel как службу с использованием SharePoint, что позволяет запускать ее без присмотра, когда никто не вошел в систему.

0 голосов
/ 11 июня 2016

Серверная сторона:

A) Переключить «Интерактивный пользователь» на «Этот пользователь» .

B) «Этот пользователь» работает только после создания этих папок :

  • C: \ Windows \ SysWOW64 \ Config \ systemprofile \ Desktop
  • C: \ Windows \ System32 \ Config \ systemprofile \ Desktop

C) Подождите, пока ... Шаг B) запускает автоматическое создание Windows:

  • C: \ Users \ Default \ Desktop

Обратите внимание, что определение «Интерактивный пользователь» подразумевает привязку к активному пользователю, вошедшему в систему на сервере. Таким образом, невозможно запустить MS Office, когда на сервере нет активных пользователей.

Т.е. для меня решение было гибридом уже предложенных решений. Я использовал Office 2013 (x86) на Win 2012R2. Моя проблема была вместо этого с Word (для использования WordToPDF).

Подробности для шага B:

  • Войдите на сервер> Пуск> запустите DCOMCNFG.EXE (для запуска служб компонентов)> Корень консоли> Службы компонентов> Компьютеры> Мой компьютер> Конфигурация DCOM ...
  • Прокрутите до «Документ Microsoft Word 97 - 2003» или «Приложение Microsoft Excel» (т. Е. Независимо от того, что нужно запустить в MS Office) ...
  • Щелкните правой кнопкой мыши и выберите «Свойства»> вкладка «Удостоверение»> выберите «Этот пользователь»> введите учетные данные для некоторого пользователя, имеющего доступ к MS Office на сервере. (Я использовал пользователя с правами администратора.)

Подробности для шага C:

  • Время ожидания варьируется от 5 минут до ночи. При необходимости создайте эту папку вручную (если папка не существует, и вы спешите завершить тестирование).
0 голосов
/ 29 октября 2014

Если учетная запись, на которой работает EXCEL, является администратором, то это будет работать:

Для 64-разрядных (x64), создайте эту папку: C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop Для 32-бит (x86), создайте эту папку: C: \ Windows \ System32 \ config \ systemprofile \ Desktop. В противном случае, чтобы решить эту проблему, выполните следующие действия:

  1. Войдите на сервер как администратор
  2. Перейдите в «Пуск» -> «Выполнить» и введите «MMC comexp.msc / 32»
  3. Перейдите в свойства приложения Microsoft Excel в разделе «Удостоверение», измените его на Интерактивный пользователь из «Запуск пользователя».(устанавливается по умолчанию).
  4. Перейдите к свойствам книги Microsoft Office Excel 2007, в разделе «Удостоверение» измените ее на «Интерактивный пользователь» из «Запуск пользователя» (который установлен по умолчанию).
  5. Перейдите на вкладку «Безопасность» для приложения Microsoft Excel и выберите «Настроить» для «Разрешения на запуск и активацию», добавьте в него ACCOUNT (под которым работает EXCEL) и задайте для него «Локальный запуск» и «Loca».l Активация "разрешение
  6. . Перейдите на вкладку" Безопасность "для книги Microsoft Office Excel 2007 и выберите" Настроить для "Разрешения доступа", добавьте к ней ACCOUNT (под которой запущен EXCEL) и дайте ей разрешение "Локальный доступ"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...