2011-05-02 2270 views
14

我有一個Web小型應用程序,我定期更新,我終於決定做一個更新程序。但是,當我在java下載更新它下載罰款。然而,當我嘗試使用Runtime.getRuntime().exec(pathToFile);解壓+運行更新,我得到CreateProcess error=740, The requested operation requires elevationCreateProcess的錯誤= 740,請求的操作需要提升

我怎樣才能解決這個問題如果程序是一個Web小型應用程序?我不能告訴他們以管理員身份運行瀏覽器。我怎樣才能解決這個問題?

+0

什麼文件類型的更新? – 2011-05-02 04:48:55

+0

Win32可執行文件windows應用程序 – Kyle 2011-05-02 04:50:30

回答

6

我的一個朋友是含有約一個月此相同的問題前(他是通過一個.exe文件展開的更新),我記得這個環節大大幫助了他:http://mark.koli.ch/2009/12/uac-prompt-from-java-createprocess-error740-the-requested-operation-requires-elevation.html

我會做這個只是在你的問題下的評論(似乎不值得直接回答/解決方案),但我沒有足夠的代表尚未發表評論。 :-P

+0

Doug的回答比較簡單。 – 2015-05-27 06:50:47

+1

我會接受你的話,並提出他的答案。 – Vinay 2015-05-28 18:24:40

+0

很久以前,當我還是一名初級開發者時,他已經回答了這個問題。似乎Doug的答案要簡單得多。 OP - 你能否將接受的答案更新爲Doug的?不知道這是可能的。 – Vinay 2017-11-08 22:43:37

27

當使用.exec(cmd)時,在cmd /c前加上你的命令,這樣你最終會得到類似rt.exec("cmd /c <your command>")的東西。這將啓動該流程並在需要時調用UAC。

+2

差點錯過了!我很高興我沒有閱讀這個答案就沒有離開這個問題:O – atoMerz 2013-11-17 09:09:41

+0

這很好。但是如果它是一個gui程序,而不是cli程序,你必須按下按鈕。 – 2017-03-19 19:10:19

4

一個手冊工作中發現,如果不是你的應用我們的工程師之一左右,啓動命令提示符,右鍵單擊窗口,然後單擊「以管理員身份運行」菜單項。在我的情況下運行.jnlp文件的工作!

-1

原因:

當您嘗試運行應用程序,你的IDE試圖啓動亞行,但它最終得到740個過程錯誤或亞行了,因爲你的IDE不允許從運行adb.exe您的文件平臺工具在您的sdk文件夾中。

解決方案:

  1. 殺adb.exe,從的eclipse.exe任務管理器在Windows殺死。
  2. 關閉Eclipse和斷開你的手機,然後重新啓動和禁用USB調試和重新啓用。
  3. 轉到eclipse圖標右鍵單擊並選擇以管理員身份運行
  4. 將它連接到您的設備並運行您的應用程序。

一個黃金提示 - 始終以管理員身份運行您的eclipse,sdk manager,命令提示符,以便您的系統對特定應用程序給予完全權限。

在窗口7 64位

設備三星4.4 的Eclipse IDE

0

測試我有同樣的問題,通過運行Java應用程序作爲管理員, 使其永久解決它:右鍵單擊您的應用程序,去屬性>兼容性>檢查「運行此程序作爲管理員」

(我有一個批處理文件運行JAVA.EXE罐子....)

0

我所面臨小號試圖用命令來運行應用程序時也UCH問題:

cmd /c start <exe_file> 

此命令無法運行需要管理員權限執行。 改爲使用

rundll32 url.dll,FileProtocolHandler <exe_file> 

命令解決了我的問題。此命令觸發UAC提示,因此用戶可以在應用程序啓動之前提供正確的訪問權限。

在我的應用程序中,我使用了PrecessBuilder::start()函數。此函數返回java.lang.Process實例,該實例在活動(process.isAlive() == true)之後纔會處理UAC提示,因此最好添加一些循環以等待,直到碰巧確定該應用程序已啓動。

相關問題