¿Cómo iniciar msconfig.exe desde Java?

Ok, he estado buscando por un tiempo y no puedo entender qué es lo que está mal con mi programa. Estoy tratando de hacer un programa similar a cmd.exe. Se supone que un comando inicia msconfig.exe, ubicado en C:/Windows/System32. Pero me da una java.io.IOException:

java.io.IOException: Cannot run program "C:/Windows/System32/msconfig.exe": CreateProcess error=2, The system cannot find the file specified

Aquí está mi código:

    public static void msconfig() {
    try {
        Runtime rt = Runtime.getRuntime();
        Process process = rt.exec("C:/Windows/System32/msconfig.exe");
        InputStream in = process.getInputStream();
        OutputStream out = process.getOutputStream();
        InputStream err = process.getErrorStream();
    } catch (IOException e) {
        Console.printToConsole("Could not launch msconfig.exe");
        e.printStackTrace();
    } finally {
        Console.printToConsole("Successfuly launched msconfig.exe");
    }
}

EDIT: ¡Así que exporté la aplicación con Eclipse y ahora funciona bien! Gracias a todos los que intentaron ayudarme :)

preguntado el 03 de mayo de 12 a las 17:05

En primer lugar, no creo que hayas entendido cómo funciona 'finalmente'. Finalmente es una declaración que se usa para indicar algo que debería siempre hacerse, independientemente de si el bloque de prueba se completó con éxito o lanzó una excepción. Su declaración de impresión de finalmente debe ser la última declaración en el intento. -

Extraño. Esto funciona para mi. ¿Puede tener que ver con los privilegios de administrador local, me pregunto? Y lo más obvio para verificar, por supuesto, si el archivo está allí. :-)-

@maksimov Lo hice, lo he usado mucho y sé que el archivo existe porque 1) Lo he visto en el directorio 2) Puede copiar y pegar el directorio en el Explorador de Windows y se inicia la aplicación. -

@Ina Lo siento, no he usado el bloque finalmente antes. Solo estaba experimentando con él, y solo he estado programando durante aproximadamente 9 meses. -

@whoantsakookie no hay necesidad de disculparse, ¡así es como aprendemos! Buena suerte -

2 Respuestas

La ruta en una computadora con Windows usa barras invertidas como separador. Utilizar:

Process process = rt.exec("C:\\Windows\\System32\\msconfig.exe");

Solo por el bien de la integridad, las barras diagonales inversas deben duplicarse porque son el carácter de escape y deben escaparse ellas mismas.

contestado el 03 de mayo de 12 a las 17:05

¿En serio? De alguna manera, el código funciona sin cambios para mí en Windows 7 y Java 6. - maksimov

@whoantsakookie Esa no es una razón para votarme negativamente. No dijiste que lo intentaste. - mariods

@MarioDeSchaepmeester No te voté en contra. Todavía no tengo suficientes representantes para hacer eso. - mattbdean

@whoantsakookie Lo siento, mi culpa. Me pregunto por qué fue entonces el voto negativo. Quienquiera que lo haya hecho, tenga cuidado de explicarlo. - mariods

@MarioDeSchaepmeester No me importó rechazarlo, pero su respuesta no ayuda, ya que funciona con barras diagonales tan bien como con barras diagonales inversas dobles. - maksimov

Está utilizando barras invertidas "incorrectas". la ruta de Windows funciona con \

pruebe la ruta c:\windows\system32\msconfig.exe

contestado el 03 de mayo de 12 a las 17:05

Windows acepta barras inclinadas y son más fáciles de escribir. Para rutas relativas (sin letras de unidad como "C:" al frente), gana portabilidad, por ejemplo, si carga "./icon.gif". - usuario desconocido

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.