Автоматизация Excel COM с помощью интерактивного пользователя перестает работать, когда пользователь выходит из системы

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

Проблема в том, что когда я выхожу из системы (через RDP), он перестает работать. Вхожу в систему, снова работает.

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


person Michael Böckling    schedule 20.11.2010    source источник


Ответы (5)


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

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

Другие советы для бедняков, которым предстоит сделать что-то подобное:

  • создайте папку C: \ Windows \ System32 [или SysWOW64] \ config \ systemprofile \ Desktop
  • убедитесь, что принтер по умолчанию настроен для пользователя, под которым работает служба
  • изменить настройки DCOMCNFG (mmc -32, добавить «компонентные службы») Excel для запуска с использованием интерактивной учетной записи
  • изменить глобальные параметры DCOM по умолчанию, чтобы разрешить локальный доступ, локальный запуск и локальную активацию для пользователя, под которым работает служба
person Michael Böckling    schedule 21.11.2010
comment
Вы имеете в виду, что выполнение упомянутых вами подсказок имитирует постоянно включенного интерактивного пользователя? - person mateolargo; 01.11.2011
comment
Использование автоматического входа в систему представляет собой угрозу безопасности. Как вы могли таким образом защитить свой сервер? - person Wessam El Mahdy; 04.01.2017

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

Для решения проблемы я сделал следующее:

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

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

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

person Onion-Knight    schedule 02.04.2012

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

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

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

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

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

  • C: \ Users \ Default \ Рабочий стол

Обратите внимание, что определение «Интерактивный пользователь» заключается в том, чтобы использовать все, что является активным пользователем, вошедшим в систему на сервере. Таким образом, невозможно запустить 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 минут до ночевки. При желании создайте эту папку вручную (если папка не существует и вы спешите завершить тестирование).
person Jason    schedule 10.06.2016

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

person Joel Spolsky    schedule 20.11.2010
comment
Привет, Джоэл, спасибо за ответ! :) Я на самом деле думал о вас, когда отлаживал это, заметив, что Excel труднее автоматизировать, чем Word или Powerpoint, и для работы требуется интерактивный пользователь, входящий в систему. Вы, наверное, знаете почему, поработав над внутренним устройством. Мне известны службы MS Office, предоставляемые Sharepoint, но, к сожалению, я разрабатываю эту службу для прямого конкурента SharePoint. ^ _ ^ Я опубликую решение, которое я нашел ниже. Ваше здоровье! - person Michael Böckling; 22.11.2010

Если учетная запись, на которой запущен 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 и выберите «Настроить» для «Разрешения на запуск и активацию», добавьте к нему УЧЕТНУЮ ЗАПИСЬ (под которой работает EXCEL) и дайте ему разрешение «Локальный запуск» и «Локальная активация».
  6. Перейдите на вкладку «Безопасность» для книги Microsoft Office Excel 2007 и выберите «Настроить» для «Разрешения доступа», добавьте к нему УЧЕТНУЮ ЗАПИСЬ (под которой работает EXCEL) и дайте ей разрешение «Локальный доступ».
person user2621461    schedule 29.10.2014