2011-04-01 39 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,它將繼承提升的權限。