java - 想在作为服务运行的 Tomcat 中打开记事本

标签 java tomcat

我试过这个:

Runtime.getRuntime().exec("notepad");

当我从控制台运行 tomcat 时它工作正常。当我尝试使用 tomcat 作为服务时,我能够在任务管理器中看到但在前台看不到。

我只在服务器机器上尝试这个场景。

最佳答案

当没有用户登录到机器时,Windows 服务就是在后台运行,无人值守。仅作为指定用户运行是不够的——您需要特别连接到该用户的桌面。这样做会给您的 tomcat 进程在系统上巨大的权限 - 因此您不应该这样做并以不同的方式设计您的应用程序。

您可以做的是:在用户的桌面上运行一个服务器进程(例如,它可以最小化到 Windows 托盘)并从 tomcat 连接到它。当应用程序在那里时,tomcat 会找到它并可以将其请求转发给它(例如打开记事本)。如果不存在,则用户显然未登录。

当您通过 TCP 进行此通信时,从用户帐户的角度来看没有任何限制您的东西 - 在另一个用户的图形上下文中执行要复杂得多。出于与安全相关的良好原因。

关于java - 想在作为服务运行的 Tomcat 中打开记事本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30708095/

相关文章:

linux - Linux 上的 Grails log4J 日志记录问题

spring-boot - Tomcat 上的 Logback 外部配置

java - 使用数据库对 RecyclerView 项目进行排序

java - 为什么实例方法的Java Method Reference不能赋值给Consumer接口(interface)

java - Ehcache搭配tomcat简单例子

java - 无法将 Eclipse 创建的 WAR 文件正确部署到 Tomcat

java - Tomcat 8.5 : Required String parameter '...' is not present

java - $HADOOP_COMMON_HOME 和 $HADOOP_HDFS_HOME 是同一个值吗?

java - WebSphere Commerce - ReLogonFormView/Session Expiration 如何工作?

Java:通过关联覆盖行为