У меня есть экземпляр EC2 с Windows Server 2012 R2 со всеми последними обновлениями.
Сначала я создал службу, а затем задачу запустить пакетный файл для создания отчета Microsoft Word (используя мою собственную программу на C #). Я поставил задачу работать с наивысшими привилегиями и работать от имени администратора. Хотя мой командный файл вызывается, он не работает. Мой командный файл:
C:/WordGenerator.exe C:/report.docx > C:/word.log 2>&1
Он выдает ошибку за исключением exe:
Failure
System.NullReferenceException: Object reference not set to an instance of an object.
at InteropFunctions.Save(String opath)
at Reporting.Report.generate()
at Reporting.WordGenerator.run()
Если я запустил командный файл вручную, он завершится нормально.
Вышеупомянутое исключение возникает, когда функция взаимодействия C # Word пытается открыть созданный отчет для дальнейшей обработки (поэтому у него фактически нет разрешений - он не может его найти).
До сих пор я узнал, что Windows может по-прежнему запускать все службы под учетной записью LOCAL SYSTEM и на лету входить в систему для данного пользователя (если есть).
Я также узнал, что службы могут работать в разных сеансах / контексте безопасности как обычные команды администратора.
Может ли кто-нибудь помочь найти решение, которое работает? Мне нужно запустить командный файл при запуске от имени администратора (без входа в систему). Я хочу пойти еще дальше и имитировать логин. У нас возникают другие проблемы из-за того, что мы не запускаем его от имени администратора (я привел простой случай). Картинки для настройки:
Причина, по которой это не удалось, была из-за DCOM в Windows. Я установил свой запуск от имени администратора (в разделе «Идентификация»).