CreateProcess的错误= 740,请求的操作需要提升

问题描述:

我有一个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

我的一个朋友是含有约一个月此相同的问题前(他是通过一个.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

当使用.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

一个手册工作中发现,如果不是你的应用我们的工程师之一左右,启动命令提示符,右键单击窗口,然后单击“以管理员身份运行”菜单项。在我的情况下运行.jnlp文件的工作!

原因:

当您尝试运行应用程序,你的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

测试我有同样的问题,通过运行Java应用程序作为管理员, 使其永久解决它:右键单击您的应用程序,去属性>兼容性>检查“运行此程序作为管理员”

(我有一个批处理文件运行JAVA.EXE罐子....)

我所面临小号试图用命令来运行应用程序时也UCH问题:

cmd /c start <exe_file> 

此命令无法运行需要管理员权限执行。 改为使用

rundll32 url.dll,FileProtocolHandler <exe_file> 

命令解决了我的问题。此命令触发UAC提示,因此用户可以在应用程序启动之前提供正确的访问权限。

在我的应用程序中,我使用了PrecessBuilder::start()函数。此函数返回java.lang.Process实例,该实例在活动(process.isAlive() == true)之后才会处理UAC提示,因此最好添加一些循环以等待,直到碰巧确定该应用程序已启动。