gpt4 book ai didi

java - 防止 jar 在网络驱动器上运行

转载 作者:行者123 更新时间:2023-11-30 10:03:54 25 4
gpt4 key购买 nike

可执行 jar 分发给每个网络驱动器的用户。我想防止用户直接在网络上运行它,因为它会导致性能和其他问题。

一种解决方案是检查执行路径并将其与网络驱动器路径进行比较,但是如果事先不知道网络驱动器路径怎么办?还有其他可能吗?

最佳答案

我不认为你可以用纯 Java 做到这一点。我很确定您需要运行外部命令或调用 native 代码来检测 JAR 文件是否在网络共享上。

您需要做的第一部分是获取 JAR 文件的绝对路径:

Class mainClass = MyMainClass.class;
File jarFile = new File(mainClass.getProtectionDomain()
.getCodeSource()
.getLocation()
.toURI());

我在 github 上找到了一个由 Aaron Digulla 编写的“要点”,它完成了任务的第二个剩余部分:

Aaron 的代码采用 Windows 绝对路径,提取驱动器号,然后运行 ​​Windows net use <drive-letter>:命令来测试驱动器是否是共享驱动器。


另一种方法是实现批处理文件执行以下操作的逻辑:

  • 提取 JAR 文件的驱动器名称
  • 使用net use ...测试共享驱动器
  • 使用相同的技术检查 Java 安装是否也不在共享驱动器上1
  • 使用java命令启动应用程序

最后,拒绝在共享驱动器上运行可能不是一个好主意。用户可能有这样做的原因,而您并不知道。我建议提示用户并让用户选择继续。或者类似的东西。

或者,在应用程序的安装说明中记录不建议在共享驱动器(或等效驱动器)上安装 JRE/JDK 和应用程序。


1 - 在共享驱动器上安装 Java 的性能与在共享驱动器上安装应用程序 JAR 一样差,甚至更差。

关于java - 防止 jar 在网络驱动器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56166423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com