我试过这个:
Runtime.getRuntime().exec("notepad");
当我从控制台运行 tomcat 时它工作正常。当我尝试使用 tomcat 作为服务时,我能够在任务管理器中看到但在前台看不到。
我只在服务器机器上尝试这个场景。
最佳答案
当没有用户登录到机器时,Windows 服务就是在后台运行,无人值守。仅作为指定用户运行是不够的——您需要特别连接到该用户的桌面。这样做会给您的 tomcat 进程在系统上巨大的权限 - 因此您不应该这样做并以不同的方式设计您的应用程序。
您可以做的是:在用户的桌面上运行一个服务器进程(例如,它可以最小化到 Windows 托盘)并从 tomcat 连接到它。当应用程序在那里时,tomcat 会找到它并可以将其请求转发给它(例如打开记事本)。如果不存在,则用户显然未登录。
当您通过 TCP 进行此通信时,从用户帐户的角度来看没有任何限制您的东西 - 在另一个用户的图形上下文中执行要复杂得多。出于与安全相关的良好原因。
关于java - 想在作为服务运行的 Tomcat 中打开记事本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30708095/