Как заставить приложение Java вызывать PowerPoint через JACOB при запуске в качестве службы?
У меня есть веб-приложение на Java, которое должно перекодировать слайды PowerPoint в изображения.
Для этого это приложение подключается через JACOB к PowerPoint.
Чтобы приложение работало правильно, я развертываю его как сервис (используя nssm). При этом кажется, что я не могу перекодировать слайды в изображения из-за следующего исключения
[1;31m[ERROR] wisdom-error[0;39m [36m{vert.x-eventloop-thread-0}[0;39m - An exception occurred while processing request POST /skillCenter/{portal}/config/add
com.jacob.com.ComFailException: Invoke of: Open
Source: Microsoft Office PowerPoint 2007
Description: PowerPoint could not open the file.
at com.jacob.com.Dispatch.invokev(Native Method) ~[jacob-1.18.jar:na]
at com.jacob.com.Dispatch.invokev(Dispatch.java:625) ~[jacob-1.18.jar:na]
at com.jacob.com.Dispatch.callN(Dispatch.java:453) ~[jacob-1.18.jar:na]
at com.jacob.com.Dispatch.call(Dispatch.java:541) ~[jacob-1.18.jar:na]
at myCompany.myProject.helpers.loaders.powerpoint.MSPowerPoint.getPresentation(MSPowerPoint.java:58) ~[na:na]
at myCompany.myProject.helpers.loaders.powerpoint.MSPowerPoint.transform(MSPowerPoint.java:139) ~[na:na]
Файл ppt явно записан в папку, в которую может записать пользователь, который запускает службу (я, в тестовом примере).
При проверке процессов с помощью Process Hacker я являюсь владельцем цепочки процессов, запускающих мое приложение, а также PowerPoint, который запускается через svchost.exe.
Итак, что не так в моем случае? Почему PowerPoint не может получить доступ к файлу при запуске в качестве службы, когда он прекрасно может открыть этот файл при запуске как классический процесс?
РЕДАКТИРОВАТЬ 1 Я попытался использовать системную учетную запись и мою учетную запись, и обе учетные записи выявили один и тот же недостаток.
1 ответ
Похоже, что программы Office при запуске в качестве службы требуют, чтобы системный локальный пользователь имел папку рабочего стола, в противном случае они просто ошибаются с такими странными ошибками.
Как следствие, решение такой проблемы заключается в создании C:\Windows\SysWOW64\config\systemprofile\Desktop
(в Windows 64).