有许多Q&一个关于Runtime.exec,但我仍然发现了一个奇怪的行为。我正在运行桌面应用程序,其中在JBoss应用程序服务器中提交并执行了一种作业(一种javax.resource.spi.work.Work)。以下是运行某些脚本的代码,无论何时需要启动任何GUI,该脚本都会阻塞。例如,如果脚本或命令是
start notepad
GUI未启动,但我可以在任务管理器中看到notepad.exe。我不知道启动记事本GUI的阻塞是什么。以下是代码:
String pathString= "D:\\folder\\abcd.bat";
pro = runtime.exec(new String[] {
pathString
});
abcd.bat文件的内容是
start notepad
找不到错误日志或异常。上面的代码在普通的Java类中运行良好。
编辑:仅在启动GUI的.exe文件中发现问题。一些不需要启动GUI但运行一些后台任务的.exe在我的代码中执行得非常好。
编辑:忘了说我的应用程序正在作为服务运行。
答案 0 :(得分:0)
从Windows vista开始,不允许与桌面交互的服务。更多细节here。不允许服务与桌面交互是Windows安全限制。我已对服务的regedit
和登录属性进行了更改,但效果很好。