如何在Gradle任务中调用exe程序,报错CreateProcess error=740如何解决
问题根因
错误码CreateProcess error=740是Windows系统的标准权限报错,本质是你执行Gradle命令的终端/进程没有管理员权限,无法启动要求管理员权限的InstallAnywhere 2018的build.exe程序。
你手动执行命令能成功,通常是以下两种原因之一:
- 你打开的命令提示符本身就是以管理员身份启动的,已经拥有高权限
- 你的系统UAC通知等级设置较低,手动触发程序运行时系统自动完成了授权,而Gradle调用CreateProcess创建子进程时不会触发交互式UAC授权弹窗,直接被系统拦截。
解决方法
方案1(最稳妥无副作用):以管理员权限运行执行Gradle命令的终端
右键点击你用来执行gradlew命令的工具(CMD、PowerShell、IDEA/Vscode内置终端等),选择「以管理员身份运行」,之后再执行构建命令即可正常触发build.exe运行。
方案2:修改Gradle任务,自动给执行命令提权
如果不想每次都手动开管理员终端,可以修改你的buildIA任务,通过Windows内置的runas命令提权执行,修改后的代码如下:
task buildIA() { doFirst { println "Executing Install Anywhere Build" } doLast { exec { executable 'cmd.exe' args (['/c', 'runas', '/user:Administrator', '"C:\\Program Files (x86)\\InstallAnywhere 2018\\build.exe" C:\\Users\\test.iap_xml +lv +wv']) } } }
如果你的系统Administrator账户设置了密码,执行时会提示输入密码,输入后即可正常运行。
方案3:永久豁免build.exe的管理员权限要求
右键点击C:\Program Files (x86)\InstallAnywhere 2018\build.exe,依次选择「属性」→「兼容性」,取消勾选「以管理员身份运行此程序」的选项(如果已经勾选的话);如果取消后还是有问题,可以使用微软官方的应用兼容性工具包,给该程序添加权限豁免规则,彻底取消它的管理员权限要求。
内容的提问来源于stack exchange,提问作者Nagaraju Chitimilla
相关产品推荐
相关产品推荐

