使用jni加载需要UAC提升权限的dll

时间:2011-04-01 04:18:57

标签: java java-native-interface uac

我有一个DLL,它具有某些功能,需要UAC提升权限才能正常工作。我将清单文件更改为level=requireAdministrator,但是当我在Java中加载dll时,功能失败。

请注意,加载dll有效,但本机方法的实现执行就好像没有提升权限一样(甚至不要求我使用UAC提升权限)。

安装程序包含一个可运行的jar文件(使用Eclipse导出),同一目录中包含本机库文件。理想情况下,我希望有人只需双击jar文件即可运行该程序。

是否有某些方法可以让这个特定的jar文件以提升的权限启动JVM(而不是始终或永远不会以提升的权限启动JVM)?或者是使用提升的权限启动JVM所需的外部程序?

1 个答案:

答案 0 :(得分:1)

您无法更改正在运行的进程的权限。当JVM加载你的DLL时,它已经在运行。

您必须在清单中运行带有requireAdministrator的.exe启动器。当用户双击它时,系统将提示提升权限,一旦您的进程启动,您就可以启动JVM并继承提升的权限。