Ejecutando shells

Me encuentro en un callejón sin salida. A ver si me puedes echar un cable.
Te pongo en antecedentes.
No se si conoces el programa "bginfo". Te permite cambiar el fondo del escritorio de windows. Bien. Tengo un programa java que ejecuta un shell con "bginfo". El caso es que yo java lo ejecuto como servicio. Bueno, no directamente. Tengo un programa Visual Basic que ejecuto como servicio y este a su vez ejecuta el programa java. En teoría el programa java debería estar ejecutándose como administrador. ¿Esto es así?. ¿Y el shell?, ¿Se ejecuta como administrador o como el usuario actúa que ha iniciado la sesión?.
El programa java no me cambia el fondo del escritorio bien. Parece que ejecuta el bginfo como administrador, por que si abro una consola desde windows y ejecuto manualmente el mismo comando que la shell, resulta que lo cambia bien. Sé que cuando se ejecuta como el usuario actual del sistema lo ejecuta bien, no así como administrador.
He intentado ejecutar el shell pero que se quede la ventana de msdos abierta, así:
Process p = Runtime.getRuntime().exec ("cmd /k exe.bat");
exe.bat es el script que lanza bginfo. Lo he puesto así porque escribiendo directamente bginfo en el comando java no me iba bien. Bueno ni así tampoco, como te digo.
El parámetro /k debería dejar la ventana de msdos abierta, sin embargo lo ejecuta en background y no aparece la ventana por ningún lado.
¿Cómo puedo ejecutar ese comando java como usuario actual del sistema y no como servicio, como parece que hace?. ¿O cómo puedo hacer que se vea la ventana msdos y se quede visible para depurar lo que está ocurriendo?.
¿Hay alguna otra forma de ejecutar un shell en java?.

1 Respuesta

Respuesta
1
Para que se ejecute en una ventana aparte:
Runtime.getRuntime().exec("cmd.exe /K start cmd.exe /K exe.bat");

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas