Windows printerqueue mit Java löschen

Selmau

Mitglied
Hallo Zusammen


Ich muss in einem Programm die Druckwarteschlange von Windows löschen, dafür suche ich eine Möglichkeit, dies über Java
zu tun. Im Internet habe ich gelesen, dass dies über das cmd auch möglich ist. Jedoch muss man dafür das cmd als Administrator ausführen.

Ich habe nun meinen Code folgendermassen aufgebaut:
Code:
 try {
                    Process exec = Runtime.getRuntime().exec("cmd.exe net stop spooler");
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            
                try {
                    Runtime.getRuntime().exec("cmd.exe del %systemroot%\\System32\\spool\\printers\\* /Q");
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                //Runtime.getRuntime().exec("cmd.exe del /f %SystemRoot%/System32/spool/printers/*.* /q");
                try {
                    Runtime.getRuntime().exec("cmd.exe net start spooler");
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

Das Problem ist, dass ich keine Fehlermeldung auf der Konsole erhalte und nicht weiss, wieso es nicht funktioniert. Manuel im cmd funktioniert es.

Hat jemand eine Idee was am Syntax oder sonst falsch sein könnte


Gruss Selmau
 
Vermutlich ein Rechteproblem. Logg doch mal den Ausgabenstream/Errorstream des Prozesses.
Java:
String cmd = "cmd.exe /c dir";
InputStream stdin = Runtime.getRuntime().exec(cmd).getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String s;
while ((s = br.readLine()) != null) {
    sb.append(s).append("\n");
}
System.out.println(sb.toString());
 

Zurück
Oben