2013-08-01 41 views
0

我们有一个Java应用程序,它是作为Windows服务运行的。实际上,我们需要调用批处理文件来启动windows'计算器'应用程序。但我们不能。如果我们不是作为Windows服务启动Java应用程序,它工作正常。我已阅读Calling a batch file from a windows service上的相同文章并完成了以下配置。 “如何从Windows服务调用批处理文件?

”首先安装服务,给予批处理文件或exe文件适当的路径,然后进入run-> services.msc->右键单击服务 - > properties-> logon-> check enable service与桌面使其能够“

之后,我们得到了部分成功,因为它首先提示许可窗口,如下所示:

回答

1

我建议,而不是打开一个批处理文件,你只要打开calc.exe文件呢?

Runtime.getRuntime().exec("c:\\windows\\System32\\calc.exe", null, new File("c:\\windows\\System32\\calc.exe")); 

编辑:如果您仍然想运行一个批处理文件,使用这样的:

Runtime.getRuntime().exec("cmd /c start nameOfTheBatchFile.bat"); 

请注意,在exec方法的第二个变量是设置你想要的目录从该调用该程序。

+0

为什么调用'cmd'来调用'start' ro调用批处理?为什么不'Runtime.getRuntime()。exec(“nameOfTheBatchFile.bat”);'? –

+0

由于批处理文件不是可执行文件,它在cmd下运行 –

+0

好吧,但为什么不只是'Runtime.getRuntime().exec(“cmd/c nameOfTheBatchFile.bat”);''或Runtime.getRuntime()。exec (“start nameOfTheBatchFile.bat”);'?为什么3个进程? –

相关问题