【问题标题】:How to launch a .jar that needs elevated privileges?如何启动需要提升权限的 .jar?
【发布时间】:2014-08-20 20:39:58
【问题描述】:

我有一个执行简单系统管理任务的小 .jar,因此它需要以提升的权限运行。我已经研究了几个小时,现在知道可以通过三种方式完成: 1) 从提升的 cmd 提示符运行 2) 将 .jar 转换为 .exe 并将其与清单文件捆绑在一起 3) 使用另一个 .jar 启动我的 .jar 并请求许可。

选项 1) 对我不起作用,因为这需要部署给不知道如何执行此操作的其他用户。选项 2) 并不理想,因为我选择用 Java 编写这个应用程序是为了它的可移植性。这可能会在不同的系统上运行,Java 似乎是最兼容的。这样就剩下选项 3),这就是我的问题所在。我似乎无法筛选大量关于如何为我的应用程序创建包装器的信息。考虑到我的规格,你们都建议创建一个包装器 .jar 来提示用户允许我的 .jar 运行吗?谢谢

【问题讨论】:

  • 一个简单的批处理文件怎么样? stackoverflow.com/questions/1894967/…
  • @assylias:为什么我们可以在这里假设窗口?如果是 Windows 问题,请参阅stackoverflow.com/questions/4662574/…
  • @dst 您可以假设 Windows,因为您正在尝试 UAC 提升,这是 Windows 特定的。
  • @Sneftel 我之所以问主要是因为这个问题明确提到了可移植性,这让我想到了一个多平台环境,其中 windows 只是需要提升的多个平台之一。在 assylias 的编辑中添加了 windows 标签。
  • @dst 啊,有道理。

标签: java windows jar


【解决方案1】:

在 Windows 上,可以将 Java 应用程序作为桌面应用程序或在后台作为 Windows 服务运行。在服务的情况下,包装器需要能够被安装、删除、启动、停止、查询其状态等。取决于应用程序是否具有 GUI 或打算在命令窗口中运行,还确定它将如何运行。

在 Windows 系统上,启动 Wrapper 的最常见方式是利用专用的批处理文件来执行控制 Wrapper 的每个动作。这使得最终用户可以双击批处理文件图标或在菜单中设置链接,看看你是否有 java 运行时环境。

不错的教程:http://wrapper.tanukisoftware.com/doc/english/qna-service.html

这里还有其他一些可能性,使用专用批处理文件、基于命令的批处理文件或独立二进制文件:http://wrapper.tanukisoftware.com/doc/english/launch-win.html#dedicated

【讨论】:

  • 我确认这暂时只是一个 Windows 应用程序。所以问题仍然存在,我如何创建一个用户只需单击并弹出具有提升权限的 Java Gui 的单个可执行文件?任何好的教程链接将不胜感激。谢谢!
【解决方案2】:

认为您可以使用 .bat 文件执行此操作。确保你有 java 运行时环境,以便你可以使用 java -jar 命令执行 jar 文件。

【讨论】:

    【解决方案3】:

    如果您希望强制用户使用提升的权限,那么纯 Java 不会削减它。我建议你编写原生代码并使用Java Native Interface (JNI)

    【讨论】:

      猜你喜欢
      • 2010-10-09
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 2013-06-14
      • 2019-03-23
      • 2017-01-06
      相关资源
      最近更新 更多