2011-04-01 69 views
0

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

请注意,加载DLL的作品,但执行本地方法执行,就好像没有提升特权(甚至不要求我使用UAC提升特权)。

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

有没有什么办法可以让这个特定的jar文件启动带有提升权限的JVM(而不是永远或从不启动具有提升权限的JVM)?或者是以高级特权启动JVM所需的外部程序?

+0

*“或者是使用提升的权限启动JVM所需的外部程序?” - 是的......我想。虽然我猜想,该程序可能只是一个BAT文件。 – 2011-04-01 05:00:51

+0

@Stephen我不知道如何从批处理文件中启动程序,除非.bat文件执行已经升级。 – 2011-04-01 06:00:27

回答

1

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

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