在实现 JavaFX 应用自更新的时候,需要在主应用(main.exe)里打开更新应用(update.exe),一开始想通过 ProcessBuilder 启动一个子进程实现的,但是这种方式打开的应用没有管理员的权限,更新应用需要管理员权限。经过一番查找之后,在 StackOverflow 上发现了另外一种方式可以打开 exe 应用,并且可以通过 UAC 提升为管理员权限。
具体方式就是:用 JNA 调用 Windows 的 API,用系统的接口打开 exe 应用。
添加 JNA
到 JNA 官网下载对应的 jar 文件加到项目 classpath 即可。
原文的代码
Shell32X.java:
1 | import com.sun.jna.Native; |
Elevator.java:
1 | package test; |