Как можно автоматизировать Word 2013 из программы C # Interop / COM с помощью планировщика заданий, когда пользователь вошел в систему и рабочий стол заблокирован?

Я унаследовал программу C #, которая использовалась для автоматизации создания ежедневного отчета в Windows XP Pro SP3 с использованием PDFCreator 1.2.3, MapInfo Professional 11, Word 2003 и Excel 2003. Этот компьютер Win XP находился в домене Active Directory, а Программа C # запускалась как пользователь домена (с правами администратора), при этом пользователь вошел в систему, а рабочий стол заблокирован. Word 2003 был автоматизирован для открытия шаблона, создания документа из шаблона и сохранения документа - и все это из / в общей сетевой папке. Excel 2003 использовался для открытия электронной таблицы с таблицей, связанной с источником данных ODBC, и обновления таблицы, вытягивая новые данные в электронную таблицу. MapInfo использовался для создания изображений карты из источника данных ODBC. PDFCreator использовался, чтобы взять электронную таблицу, текстовый документ и изображения и собрать их все вместе в ежедневный отчет.

Поскольку срок службы XP подошел к концу, я переместил эту программу на виртуальную машину Win 8.1 EE (в том же домене) и установил продукты Office 365 (Word 2013 и Excel 2013) вместе с PDFCreator 1.7.1 и MapInfo Professional. 12 для автоматизации создания этого ежедневного отчета. Эта программа работает нормально при запуске вручную на новой виртуальной машине, но не работает при запуске от имени того же пользователя, что и запланированная задача. Эта запланированная задача настроена на запуск с наивысшими разрешениями и запускается, если пользователь не вошел в систему.

Я понимаю, что здесь задействовано много переменных; операционная система должна была измениться, и мы больше не используем старую версию Office, я также не мог получить более старые версии PDFCreator или MapInfo. Поэтому я сосредоточу вопрос на том, что я могу контролировать. Мне известно о проблемах, с которыми я сталкиваюсь при этом, но не знаю, действительно ли это это реально возможно, учитывая новые операционные системы и приложения (а именно Word 2013 и Excel 2013), с которыми меня попросили попытаться заставить их работать.

Итак, возникает вопрос: как можно автоматизировать Word 2013 из программы C # Interop / COM с помощью планировщика задач для запуска программы с зарегистрированным пользователем и заблокированным рабочим столом?


person RGS    schedule 14.04.2014    source источник
comment
Да, но так было давно. Автоматизация офиса Google .net. Подозреваю, что интерактивность использовалась для решения таких вещей, как акции и тому подобное.   -  person Tony Hopkinson    schedule 14.04.2014
comment
У вас есть исходный код программы на C #?   -  person Black Frog    schedule 14.04.2014
comment
Я гуглил и читал, пока мои глаза не стали красными. Я не видел способа делать то, что я пытаюсь сделать, через планировщик заданий. Мне нужно пересмотреть свой вопрос.   -  person RGS    schedule 14.04.2014
comment
Да, Черная лягушка, у меня есть источник.   -  person RGS    schedule 14.04.2014
comment
Я бы порекомендовал вам скомпилировать приложение с Office Справочные материалы по основной сборке взаимодействия, 2013 г..   -  person Black Frog    schedule 14.04.2014
comment
Тони, это нормально работало на Win XP Pro SP3 до того, как было перенесено на машину Win 8.1 EE. Вы предлагаете, чтобы Win 8.1 не загружал общие сетевые ресурсы для пользователя, который вошел в систему, но заблокировал рабочий стол?   -  person RGS    schedule 14.04.2014
comment
В локальной политике безопасности вы установили для своего тестового пользователя разрешение на вход в систему в качестве пакетного задания или службы?   -  person Nanhydrin    schedule 14.04.2014
comment
Black Frog, программа в настоящее время выполняется именно так.   -  person RGS    schedule 14.04.2014
comment
Вопрос изменен в связи с установлением того, что сеанс фактически является интерактивным, на основе ответа, предоставленного Black Frog.   -  person RGS    schedule 14.04.2014


Ответы (2)


Из Microsoft Docs - Рекомендации по серверной автоматизации Office:

Все текущие версии Microsoft Office были разработаны, протестированы и настроены для работы в качестве продуктов конечного пользователя на клиентской рабочей станции. Они предполагают наличие интерактивного рабочего стола и профиля пользователя. Они не обеспечивают уровень повторного входа или безопасности, необходимый для удовлетворения потребностей серверных компонентов, предназначенных для работы без присмотра.

В настоящее время Microsoft не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любых автоматических, неинтерактивных клиентских приложений или компонентов (включая службы ASP, ASP.NET, DCOM и NT), поскольку Office может работать нестабильно. поведение и / или тупик при запуске Office в этой среде.

Я знаю, что это не отвечает на вопрос об Office 365, но я думаю, что это настолько близко, насколько вы собираетесь получить. Также я нашел эту статью: HOWTO: настроить приложения Office для работы под интерактивной учетной записью пользователя.

person Black Frog    schedule 14.04.2014
comment
Учитывая, что пользователь, который должен запускать задачу, в настоящее время находится в системе (но с заблокированным рабочим столом), можете ли вы сказать, что Office запускается без интерактивного рабочего стола и профиля пользователя? Другими словами, обязательно ли для интерактивного рабочего стола и профиля пользователя, чтобы у пользователя не было заблокированного рабочего стола? Я просто пытаюсь быть на 100% уверенным в определении интерактивного сеанса и профиля пользователя. - person RGS; 14.04.2014
comment
Если пользователь входит в систему, рабочий стол заблокирован, у вас интерактивный сеанс. - person Black Frog; 14.04.2014
comment
Учитывая это, у меня должен быть интерактивный сеанс, в результате чего ответ, который вы предоставили, будет нулевым. - person RGS; 14.04.2014

Ответ, который я нашел, заключается в том, что такая задача, как эта, при запуске в Windows XP Pro SP3 с параметрами, выбранными для запуска от имени администратора и для запуска вне зависимости от того, вошел ли он в систему или нет, не могла использоваться с той же задачей / пользователем. / разрешения под Windows 8.1 EE.

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

Для всех, кто переносит устаревшие программы / задачи из Win XP по мере их списания из-за истечения срока службы, вы можете попробовать удалить запуск от имени администратора и запустить, если не вошли в систему, параметры задачи в новой версии Планировщика задач Windows. .

person RGS    schedule 21.04.2014