UAC 是 Windows 特有的一个权限控制机制,Java标准库并没有提高对它的支持。尽管大部分时候我们都使用 Java 进行平台无关的操作,但对于一个桌面程序,有时候确实需要请求权限完成一些设置,正如 Intellij Idea 和 Eclipse 的 CodeMix 插件一样。这种操作会给开发者和用户代来便利。
实现方式
正如前面提到到,Java 标准库并不提供请求权限的操作。但我们还有一些变通的办法:
- 用一个 exe 可执行请求权限,再启用 JVM 进程。
- 通过 JNI 调用本地(native)代码。
- Java 生成脚本(bat, vbs等)请求权限。
JNI 方式
这里有现成的库可以使用——Java Native Access (JNA)
https://github.com/java-native-access/jna
这里有一个示例如何使用这个库
https://github.com/lukacat10/JavaUACExample
脚本方式
这是我比较推荐的方式、这里依然有现成的解决方案