我有一个 DLL,它具有某些功能,需要 UAC 提升权限才能正常工作。我将 list 文件更改为 level=requireAdministrator
,但是当我在 Java 中加载 dll 时,功能失败。
请注意,加载 dll 可以工作,但 native 方法的实现就像没有提升的权限一样执行(甚至不要求我使用 UAC 提升的权限)。
该安装程序由一个可运行的 jar 文件(使用 Eclipse 导出)和同一目录中的 native 库文件组成。理想情况下,我希望有人只需双击 jar 文件即可运行该程序。
有什么方法可以让这个特定的 jar 文件以提升的权限启动 JVM(而不是总是或从不以提升的权限启动 JVM)?或者是否需要外部程序才能以提升的权限启动 JVM?
最佳答案
您无法更改正在运行的进程的权限。当 JVM 加载您的 DLL 时,它就已经在运行了。
您必须在 list 中使用 requireAdministrator
运行 .exe 启动器。当用户双击它时,系统会提示权限提升,一旦你的进程启动,你就可以启动JVM,它会继承提升的权限。
关于java - 加载需要 UAC 使用 jni 提升权限的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5509117/