2017-06-01 5 views
0

Ich versuche, einen Windows-Befehl mit Process Builder auszuführen. Ich bin mir nicht sicher, warum es mit 1 endet, da ich glaube, dass ich die richtige Eingabe gegeben habe. Es wäre toll, wenn irgendjemand es sehen und führen könnte, wo ich vielleicht falsch liege?Process Builder akzeptiert keine Eingabe über 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(); 
      } 

Ausgang:

Geben Sie das Kennwort für alex:

+0

Überprüfen Sie den Fehlerstrom erhalten – Binu

+0

To Fehler-Stream einfach zu bekommen, um es mit 'pb.redirectErrorStream (true)' zu stdout umleiten. Aber [vielleicht ist es überhaupt nicht möglich] (https://stackoverflow.com/q/25664203/6730571) ... vielleicht akzeptiert 'runas' kein Passwort von stdin –

+0

Ich habe das auch versucht. Kein Glück. Nicht sicher, warum es 1 als Exit-Code zurückgibt. –

Antwort

0

Verwenden Sie diese den Fehler für den Fehlerausgang

    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

Ich bekomme nichts, wenn es läuft. Ich habe gerade 1 für p.waitfor() –

Verwandte Themen