2010-11-20 5 views
5

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

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

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

ответ

7

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

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

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

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

Удачи вам!

+0

Вы имеете в виду выполнение «Другие намеки», которые вы упомянули, имитирует наличие постоянного интерактивного пользователя? – mateolargo

+0

Использование автоматического входа в систему - это риск для безопасности. Как вы могли защитить свой сервер таким образом? –

2

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

+0

Hi Joel, спасибо, что ответ! :) Я действительно думал о вас, когда я отлаживал это, замечая, что Excel труднее автоматизировать, чем Word или Powerpoint, требуя от интерактивного пользователя войти в систему. Вы, наверное, знаете, почему, работая над внутренними. Я знаю о службах MS Office, предоставляемых Sharepoint, но, к сожалению, я разрабатываю эту услугу для прямого конкурента SharePoint.^_^Я опубликую решение, которое я нашел ниже. Ура! –

1

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

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

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

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

После этого я смог выйти из системы, используя библиотеки Excel COM Automation.

0

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

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

  1. Войти на ваш сервер как администратор
  2. Перейти к " Start "->« Run »и введите« MMC comexp.msc/32 »
  3. Перейдите в свойства приложения Microsoft Excel в разделе «Идентификация», измените его на «Интерактивный пользователь» из «Запускающего пользователя» (который установлен по умолчанию).
  4. Перейдите в свойства Microsoft Office Excel 2007 Workbook, в разделе «Идентификация», измените его на «Интерактивный пользователь» из «Запускающего пользователя» (который установлен по умолчанию).
  5. Перейти на вкладку Безопасность для приложений Microsoft Excel и выберите Настройка для «запуск и активация разрешений» и добавить СЧЕТ (под которым EXCEL запущен) к нему и дать ему «Локальный запуск» и «Локальная активация» разрешение
  6. Перейдите на вкладку Security для Microsoft Office Excel 2007 Workbook и выберите Настройка для «Права доступа» и добавить СЧЕТ (под которым EXCEL запущен) к нему и дать ему «Локальный доступ» Разрешение
0

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

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

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

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

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

  • C: \ Users \ Default \ Desktop

Обратите внимание на определение "Interactive User" является спекулировали на то, что является активным вошедшего пользователя на сервер. Таким образом, не удается запустить MS Office, когда пользователь не активен на сервере.

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

Детали для стадии B:

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

Детали для стадии C:

  • Ожидание варьирует от 5 мин до в течение ночи. При желании, создайте эту папку вручную (если папка не существует, и вы спешите завершить тестирование).