所以我們有一個作爲Windows服務運行的java進程。它需要執行Runtime.getRuntime().exec(command)
的命令。它執行的命令需要UAC。這是在Windows服務器2008年,聽起來像你不能禁用一個單一的可執行文件的UAC所以有沒有其他方式來使這項工作?java getRuntime()。exec需要UAC的EXE
回答
如果您的Java應用程序作爲Windows服務運行,它很可能運行在系統帳戶之一下:SYSTEM(最可能),LOCAL SERVICE或NETWORK SERVICE。因此,如果服務在SYSTEM帳戶下運行,那麼從服務啓動的所有內容都將繼承該帳戶。無論如何,您的服務必須被允許與桌面互動。總結一下,如果你的進程運行時提升,那麼從它開始的進程也將運行提升。
升高,你必須使用Windows API的ShellExecute或ShellExecuteEx功能。如果您開始使用的.exe文件在其清單中標記爲level=requireAdministrator
,則shell將顯示UAC對話框。如果未標記,則可以使用動詞/操作runas
強制UAC確認對話框。注意:Windows XP上的runas
將顯示「以其他用戶身份運行」對話框。
如果Runtime.getRuntime().exec(command)
通過ShellExecute實現,那麼使用適當的清單標記.exe文件就可以工作;如果exec
使用CreateProcess,則該過程將以當前用戶權限開始,即不升高;此外,如果.exe在其清單中具有requireAdministrator
,則該進程根本不會啓動。
謝謝阿列克謝,我認爲尤其是EXE(從UnxUtils patch.exe)沒有定義適當的清單。使用cygwin中的patch.exe不會彈出UAC(或者拒絕權限失敗),所以我認爲它確實如此。 – vinnyjames 2011-04-13 17:32:40
@vinnyjames很高興幫助。您可以通過查看.exe文件來檢查清單。在cygwin的情況下,我想你可以添加一個清單,如果它有幫助。 – 2011-04-14 08:47:03
耶再次感謝。你用什麼工具查看exe的UAC清單? – vinnyjames 2011-04-14 14:52:09
- 1. java getRuntime()。exec()不工作?
- 2. getRuntime()EXEC()什麼也不做
- 3. 在getRuntime()中使用引號exec
- 4. java getRuntime().exec()對於運行基本cmd命令不起作用
- 5. Windows UAC安全與Exe
- 6. 如何從Java的getRuntime()。exec()生成程序時爲ps設置argv [0]名稱?
- 7. Delphi:需要時提示UAC提升
- 8. getRuntime與管道?
- 9. UAC和Java
- 10. 使用getRuntime()。exec()命令執行ffmpeg命令
- 11. 需要的Java
- 12. TYP3需要PHP函數exec()嗎?
- 13. 加載DLL需要UAC提升特權與jni
- 14. c#exe與exec的返回值
- 15. .net 2.0 Windows應用程序需要提升的uac權限
- 16. 新編譯的應用程序需要UAC /海拔?
- 17. 什麼操作需要Windows中的UAC提升?
- 18. 需要將silverlight轉換爲exe
- 19. Launch4J exe仍然需要jar文件
- 20. 我需要一個SubSonic 2.0.3 - SubCommander exe
- 21. 需要在exe中重定位
- 22. 如何使用Runtime()。getRuntime()。exec()除JAVA中的目錄文件夾使用zip命令?
- 23. 在java中創建一個* .exe應用程序,執行它需要安裝java?
- 24. 需要JAVA
- 25. 需要在Java
- 26. 如何讓netNamedPipeBinding與需要UAC一起使用?
- 27. 爲什麼sslStream.AuthenticateAsServer不需要UAC和替代
- 28. Vista的UAC - 一個exe的權限和證書
- 29. Java管理權限(UAC)
- 30. Unix上的Java exec
看起來像將清單應用於可執行文件可能是一個選項https://sourceforge.net/tracker/index.php?func=detail&aid=2539794&group_id=9328&atid=109328#(必須展開評論) – vinnyjames 2011-04-12 23:55:18
可能的重複[ Java:以管理員身份運行](http://stackoverflow.com/questions/1385866/java-run-as-administrator) - 閱讀接受的答案... – 2011-04-13 01:26:30
請參見[在Windows Vista/7上爲Java應用程序的管理員權限申請](http://stackoverflow.com/questions/258728/request-admin-privileges-for-java-app-on-windows-vista) – eee 2011-04-13 06:38:44