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

时间:2011-05-02 04:44:50

标签: java

我有一个定期更新的网络小程序,我最终决定制作更新程序。但是,当我在java中下载更新时,它下载得很好。但是,当我尝试使用Runtime.getRuntime().exec(pathToFile);解压缩+运行更新时,我得到CreateProcess error=740, The requested operation requires elevation

如果程序是网络小程序,我该如何解决这个问题?我不能告诉他们将浏览器作为管理员运行。我该如何解决这个问题?

8 个答案:

答案 0 :(得分:33)

使用.exec(cmd)时,请在命令前添加cmd /c前缀,以便最终获得rt.exec("cmd /c <your command>")之类的内容。这将启动该过程并在需要时调用UAC。

答案 1 :(得分:6)

我的一个朋友在一个月前遇到了同样的问题(他通过.exe文件展开更新),我记得这个链接对他有很大帮助:http://mark.koli.ch/2009/12/uac-prompt-from-java-createprocess-error740-the-requested-operation-requires-elevation.html

我会在你的问题下做一个简单的评论(似乎不值得直接回答/解决方案),但我还没有足够的回复评论。 :-P

答案 2 :(得分:3)

围绕我们的一位工程师进行的一项手册工作发现,如果不是您的应用程序,请启动cmd提示,右键单击该窗口并单击“以管理员身份运行”菜单项。在我的情况下运行.jnlp文件工作!

答案 3 :(得分:1)

当尝试使用命令运行应用程序时,我也遇到了这样的问题:

cmd /c start <exe_file>

此命令无法运行需要管理员访问权限的可执行文件。 而是使用

rundll32 url.dll,FileProtocolHandler <exe_file>

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

在我的应用中,我使用了PrecessBuilder::start()功能。此函数返回java.lang.Process实例,该实例将处于活动状态(process.isAlive() == true),直到用户处理UAC提示符为止,因此最好添加一些循环以等待,直到确定应用程序已启动为止。

答案 4 :(得分:0)

原因:

当您尝试运行应用程序时,IDE会尝试启动adb,但最终会出现740进程错误或adb down,因为您的IDE不允许从sdk文件夹中的平台工具运行adb.exe文件。

解决方案:

  1. 杀死adb.exe,从Windows中的任务管理器中杀死eclipse.exe。
  2. 关闭eclipse并断开手机并重新启动它并禁用USB调试并再次启用它。
  3. 右键单击eclipse图标并选择以管理员身份运行
  4. 将其连接到您的设备并运行您的应用程序。
  5. 黄金提示 - 始终以管理员身份运行您的eclipse,sdk管理器,命令提示符,以便您的系统为特定应用程序提供完全权限。

    在窗口7 64位上测试

    设备三星4.4 eclipse ide

答案 5 :(得分:0)

我有同样的问题,通过以管理员身份运行java应用程序来解决它, 使其成为永久性:右键单击您的应用程序,转到属性&gt;兼容性&gt;选中“以管理员身份运行此程序”

(我有一个批处理文件运行Java.exe -jar ....)

答案 6 :(得分:0)

我也遇到过这个问题,但是当尝试使用前缀运行 Runtime.getRuntime().exec(filepath) 时 “cmd /c”到它完美运行的文件路径

你的代码应该像 Runtime.getRuntime().exec("cmd /c <filepath>")

注意: filepath-定位文件所需的完整目录列表

在我的代码中:

     String filepath="C:\\Users\\MSI\\Downloads\\AutomationInstaller.exe"

答案 7 :(得分:-1)

如果问题出在Android Studio上,那么杀死adb.exe的任何实例都可以解决。