java.io.IOException 的可能原因:CreateProcess error=5

2022-09-02 10:06:54

什么样的问题会导致Java的ProcessBuilder.start方法返回一个IOException,并带有一个注释,上面写着error=5?

具体来说,我们已经看到一个远程客户系统运行一些Java代码,这些代码类似于...

ProcessBuilder pb = new ProcessBuilder(cmdArray);
pb.redirectErrorStream(true);
Process p = pb.start();

...抛出这样的异常...

java.io.IOException: CreateProcess: C:\example\example.exe argument1 argument2 error=5
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
at java.lang.ProcessBuilder.start(Unknown Source)
at example_code_above

我们已经确认异常中记下的命令“C:\example\example.exe argument1 argument2”可以通过cmd.exe手动成功运行,因此我们确信命令本身没有损坏。


答案 1

error=5表示以下之一:

1) 文件不可执行
2) 文件不可访问

编辑:不会抛出异常
3)命令(示例.exe)退出,退出代码为5


答案 2

Alexandr是正确的,Windows安全性不允许该进程运行,但是powershell命令对我不起作用。以下是我所做的:

  • 打开 Windows 资源管理器,然后导航到示例.exe
  • 右键单击它并选择“属性”
  • 转到“安全”选项卡,然后单击“编辑”按钮
  • 在顶部框中选择您的用户名,在底部框中选择“完全控制”或至少“读取和执行”
  • 单击“确定”以删除这些框

现在,您的用户可以执行该程序。耶!


推荐