我需要使用Preferences API的systemRoot功能,但是如果UAC處於打開狀態,則由於缺少Windows權限而失敗。我試圖找到彈出UAC提示並提升權限以允許systemRoot更新成功的技術細節。如何提升Java的UAC權限?
11
A
回答
6
根據已接受的對this SO question的回答,您無法更改正在運行的進程的UAC權限。
根據答案this SO question,推出以提升的權限的過程可能的方式是:
- 創建一個包裝與Windows清單請求提出的權限啓動JVM(使用適當的參數!) ,或
- 使用鏈接到第二個答案的應用程序以提升的權限運行JVM。
2
除了清單使用JNI調用帶有verb = runas的ShellExecute也會這樣做 - 但使用清單指定內容是一種更健壯的方式。獲取嵌入到exe中的清單可能有點棘手,並且早期版本的Visual C++中的清單處理存在很多問題,但其中大多數都是現在制定出來的。
也就是說,我鼓勵你認真思考爲什麼你需要訪問系統根目錄 - 是否存儲所有用戶的設置?如果是這樣,你可能想考慮有一個單獨的應用程序來管理這些設置(使用它自己的清單)。你不能只是彈出一個UAC提升對話框 - 你實際上必須啓動一個新的進程(如果你看到任務管理器的應用程序似乎以這種方式工作,你會看到應用程序的第二個實例實際上啓動 - 查看任務管理器中的UAC虛擬化列以查看差異)。
另一種可能性是,你絕對必須從非提升過程中配置註冊表的區域來調整安全設置 - 但這違背了UAC的設計,它會幾乎總是造成更多的麻煩比它的價值。可能更好地喝M $ kool-aid併爲UAC正確設計你的應用程序。 (相信我,我感到你的痛苦 - 經歷過很多次)。
當我正經歷着這種痛苦我自己,我發現下面的MSDN文章非常有助於瞭解微軟的設計意圖與UAC:
http://msdn.microsoft.com/en-us/library/aa511445.aspx
希望這有助於...
2
你可以使用運行作爲根庫:https://github.com/dyorgio/run-as-root
// Specify JVM options (optional)
RootExecutor rootExecutor = new RootExecutor("-Xmx64m");
// Execute privileged action
rootExecutor.run(() -> System.out.println("Call your admin code here."));
PS:我是作者。
相關問題
- 1. 使用UAC進行權限提升
- 2. Java管理權限(UAC)
- 3. 提升權限
- 4. .net 2.0 Windows應用程序需要提升的uac權限
- 5. Win7,SP1,UAC,管理權限和提升 - 問題!
- 6. JScript:如何獲得提升的權限(管理員權限)
- 7. 在權限提升C#.NET
- 8. QProcess用戶權限提升
- 9. PYTHON複製權限提升
- 10. 如何在Vista +上使用Java/JNA提升權限啓動應用程序以觸發UAC
- 11. 使用清單打開新控制檯窗口提升UAC的權限
- 12. Delphi:需要時提示UAC提升
- 13. Wix安裝的文件提升權限
- 14. 帶有提升權限的Sharepoint查詢
- 15. 的Metasploit:bypassuac窗口權限提升掛起
- 16. Firemonkey OS X - 請求提升的權限
- 17. 加載DLL需要UAC提升特權與jni
- 18. UAC提升,運行一些不提升的代碼
- 19. 提升瀏覽器javascript權限?
- 20. 如何使用提升的權限從WiX運行ngen?
- 21. 如何強制進行WiX的權限提升setupbld.exe
- 22. 如何要求提升註冊局對HKLM的訪問權限?
- 23. 如何在運行時詢問用戶提升的權限?
- 24. 如何使用grunt-shell以提升的權限運行命令?
- 25. 在Go中請求UAC提升
- 26. 使用IsAdmin提升UAC屏蔽()
- 27. UAC以編程方式詢問權限
- 28. MSI包沒有UAC管理權限
- 29. 安裝更改不要求UAC權限
- 30. 如何UAC使用.NET提升COM組件
[UAC和Java]的可能重複(http://stackoverflow.com/questions/1076794/uac-and-java) – 2011-01-11 21:03:40
排序然而,這個特定的問題嚴重缺乏使其工作所需的技術細節。我正在尋找*實用信息,而不是我們都知道的理論。 :-) – 2011-01-12 13:18:52
在java bug數據庫中有一個「無法修復」的bug:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6790382 – 2014-11-03 16:50:10