可執行 jar 分發給每個網絡驅動器的用戶。我想防止用戶直接在網絡上運行它,因為它會導致性能和其他問題。一種解決方案可以是檢查執行路徑并將其與網絡驅動器路徑進行比較,但是如果事先不知道網絡驅動器路徑怎么辦?還有其他可能嗎?
1 回答

烙印99
TA貢獻1829條經驗 獲得超13個贊
我不認為你可以用純 Java 做到這一點。我很確定您需要運行外部命令或調用本機代碼來檢測 JAR 文件是否在網絡共享上。
您需要做的第一部分是獲取 JAR 文件的絕對路徑:
Class mainClass = MyMainClass.class;File jarFile = new File(mainClass.getProtectionDomain() .getCodeSource() .getLocation() .toURI());
我在 github 上找到了一個由 Aaron Digulla 編寫的“要點”,它完成了任務的第二部分:
Aaron 的代碼采用 Windows 絕對路徑,提取盤符,然后運行 Windowsnet use <drive-letter>:
命令來測試該驅動器是否為共享驅動器。
另一種方法是實現批處理文件執行以下操作的邏輯:
提取 JAR 文件的驅動器名稱
用于
net use ...
測試共享驅動器使用相同的技術檢查 Java 安裝是否不在共享驅動器上1。
使用
java
命令啟動應用
最后,拒絕在共享驅動器上運行可能不是一個好主意。用戶可能有這樣做的原因,而您并不知道。我建議提示用戶并讓用戶選擇繼續?;蝾愃频臇|西。
或者,在應用程序的安裝說明中記錄不建議將 JRE/JDK 和應用程序安裝在共享驅動器(或等效驅動器)上。
添加回答
舉報
0/150
提交
取消