我使用Apache Common Daemon(Windows Server 2008)将Java应用程序安装为Windows服务
我需要在我的应用程序中运行excel.exe命令,所以我设置我的服务以便能够与桌面交互(通过选中服务&#39的属性中的登录选项卡中的框)。
这样,当我调用ProcessBuilder的start()方法时,我看到显示here的弹出窗口。
有没有办法避免这种情况?
我的目的是将我的java应用程序作为服务运行并并行运行多个excel.exe实例,以便同时处理多个.xlsm文件,但我不想以任何方式进行交互。
我已经阅读了有关会话0隔离的this文章,所以我想知道是否真的可以启动许多excel.exe(或任何其他" GUI命令")来自WinServer 2008上的Windows服务?
谢谢。
答案 0 :(得分:0)
这是我迄今为止找到的解决方案(现在似乎正在工作)
根据zapl的建议,为了直接使用脚本执行我的宏,我创建了一个.vbs。
然后我修改了运行excel的用户以匹配用于启动服务的用户(感谢this)
在此之后,我改变了我的ProcessBuilder:
ProcessBuilder pb = new ProcessBuilder("cscript.exe", excelPathArg....)
到此:
ProcessBuilder pb = new ProcessBuilder("cmd", "/C", "cscript.exe", excelPathArg....
现在,即使用户启动服务已注销,ProcessBuilder也似乎被正确触发。
我会尽快提供更多详细信息