2017-06-01 32 views
0

我想使用流程构建器运行Windows命令。我不确定它为什么会退出1,因为我觉得我给了正确的输入。如果任何人都能看到它并指导我可能会出错的地方,那将是非常棒的。流程构建器不接受通过getOutputStream输入

try{ 
      ProcessBuilder pb = new ProcessBuilder("runas","/noprofile","/user:alex", "cmd"); 
      Process p = pb.start(); 
      OutputStream os = p.getOutputStream(); 
      PrintStream ps = new PrintStream(os); 
      ps.println("password"); 
      ps.flush(); 

      System.out.println(p.waitFor()); 
      BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); 
      String resultLine = in.readLine(); 
      while (resultLine != null) { 
       System.out.println(resultLine); 
      resultLine = in.readLine(); 
      } 
     } 
      catch (IOException e) { 
       e.printStackTrace(); 
      } 

输出:

亚历输入密码:

+0

检查错误流的错误输出 – Binu

+0

要轻松获取错误流,使用'pb.redirectErrorStream(true)'将其重定向到stdout。但[它可能根本不可能](https://stackoverflow.com/q/25664203/6730571)...也许'runas'不接受标准输入密码 –

+0

我也试过这个。没有运气。不知道为什么它返回1作为退出代码。 –

回答

0

使用该工具来获取错误

    System.out.println(p.waitFor()); 
        BufferedReader in = new BufferedReader(new InputStreamReader(p.getErrorStream())); 
        String resultLine = in.readLine(); 
        while (resultLine != null) { 
         resultLine = in.readLine(); 
         System.out.println(resultLine);  
        } 
+0

我没有得到任何东西,如果它运行它。我刚刚得到1为p.waitfor() –