Ejecutar aplicaciones Windows en ventanas independientes dentro de Linux
Trabajar con una maquina virtual reúne muchas ventajas, pero también tiene algunos inconvenientes.
Uno de ellos es que para trabajar con un sistema operativo con un sistema de ventanas nos vemos obligados a conmutar entre el espacio de trabajo nativo y el virtualizado, y aunque es un proceso ágil y sencillo, si tenemos que efectuarlo a menudo se vuelve algo tedioso.
Aunque en Linux, por ejemplo, podemos tener el S.O. virtual a pantalla completa en una de las áreas de trabajo y simplemente conmutando entre ellas cambiaremos de S.O. de forma transparente.
Pero hay otra forma aún más cómoda de poder interactuar con el sistema operativo virtual y es conseguir que las ventanas de este se integren en el sistema operativo anfitrión como si fueran ventanas nativas del mismo. El que conozca Parallels Coherence para Mac OS X entiende de lo que hablo. Es decir que podemos ejecutar por ejemplo una ventana de Windows en Linux como si fuera una aplicación nativa del mismo, aunque en la realidad se este ejecutando en la maquina virtual.
Tendríamos algo como lo de esta imagen
Se puede conseguir de una forma realmente sencilla y rápida y voy a explicar como hacerlo empleando Ubuntu 7.04 como S.O. anfitrión, VMware Server como programa de virtualización y Windows XP Professional como sistema operativo virtualizado. Aunque se puede emplear cualquier otra distribución de Linux, simplemente se necesita el paquete rdesktop instalado (de serie en Ubuntu). También se puede emplear Quemu para hacer lo mismo que con VMware. En el caso de Windows es necesario que incorporen el servicio Terminal Services, algo que incorporan todas las versiones profesionales, como Windows 2000, XP Professional y las versiones profesionales de Vista (Bussines, Enterprise y Ultimate) y que no incorporan las versiones Home.
Para el ejemplo empleo VMware Server, aunque se podria emplear perfectamente el Player para el mismo cometido.
Lo primero que necesitamos es tener una maquina virtual creada con Windows XP Professional. Ahora necesitamos arrancar esta maquina para realizar las modificaciones necesarias para poder ejecutar los programas en ventanas independientes.
Modificaciones a realizar:
- Habilitar el control remoto del escritorio. Esto es necesario porque lo que hace en realidad este método es iniciar sesión en el Windows virtualizado a través del protocolo RDP (Remote Desktop Protocol) de Terminal Service. Para hacer esto nos vamos al Menu Inicio, al icono de Mi PC y con el botón derecho del ratón seleccionamos Propiedades. Nos vamos a la pestaña Remoto y activamos la casilla Permitir que otros usuarios se conecten de manera remota a este equipo.
- Automatizar el arranque de los Terminal Services. Esto es necesario para que cada vez que queramos emplear este método no nos veamos obligados a iniciar sesión para que se inicie este servicio y luego cerrarla e iniciar las aplicaciones en ventanas independientes. Si automatizamos el inicio de ester servicio podríamos llegar a crear un script que iniciara la maquina virtual de forma automática y luego las aplicaciones de Windows. Para cambiar el inicio de manual a automático de este servicio nos vamos al Menu Inicio, y con el botón derecho del ratón sobre el icono de Mi PC, elegimos Administrar. Ahí desplegamos la lista Servicios y Aplicaciones y seleccionamos Servicios. Nos movemos por la lista y buscamos Terminal Services y hacemos doble click de ratón sobre el. En la lista desplegable donde dice Tipo de Inicio cambiamos Manual por Automático.
- Descargar el programa SeamlessRDP. Este programa es necesario porque los Terminal Services originales de Microsoft son bastante sencillos y limitados y no incorporan esta característica (ventanas independientes del escritorio) como si lo hacen otras aplicaciones más avanzadas como Citrix o Cendio. El SeamlessRDP lo podemos descargar de la pagina de Cendio, aquí .Luego lo descargamos en C:\seamlessrdp (aunque podemos elegir otra ruta con total libertad).
- Desactivar el escritorio para el usuario que empleemos. Esto es necesario para que no tengamos el escritorio de Windows de fondo sobre el de Ubuntu. Para ello iniciamos sesión en Windows con el usuario que vayamos a emplear (si tenemos más de uno y no hemos iniciado ya la sesión para ese usuario) y luego editamos el registro. Vamos al Menu Inicio, pulsamos sobre Ejecutar, escribimos regedit y le damos a Aceptar. Ahí iremos a la siguiente rama HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer y allí, pulsando con el botón derecho sobre la parte derecha seleccionamos Nuevo y Valor DWORD. Al nuevo Valor DWORD le llamaremos NoDesktop y le daremos un valor igual a 1.
- Comprobar opciones de inicio de sesion. Esto es necesario para que funcione bien el modo Seamless. En Menu Inicio, Panel de Control, Cuentas de Usuario pulsar sobre Cambiar la forma en la que los usuarios inician y cierran sesión. Nos aparecera una ventana con dos opciones: Usar la Pantalla de bienvenida y Usar Cambio rápido de usuario. Debemos activar ambas opciones.
- Activar la contraseña para el usuario. Para poder emplear los Terminales Services es necesario que iniciemos sesión con una contraseña, debido a la función para la que fueron diseñados. Entonces si nuestro usuario no tiene actualmente una contraseña, necesitaremos crear una. Iremos al Menu Inicio, Panel de Control, Cuentas de Usuario y ahí seleccionando el usuario que vamos a emplear elegimos Crear una contraseña.
- Anotar la IP de la maquina virtual. Es la forma de indicarle al programa rdesktop cual es la maquina virtual (host) a la que conectarse. Para averiguar y apuntar la misma (da igual que la maquina virtual funcione con NAT o Bridged o Host Only) nos vamos a Menu Inicio, Ejecutar, escribimos cmd y le damos a Aceptar. Estaremos ahora en la linea de comandos (que emula al MS-DOS) de Windows, ahi escribimos ipconfig y le damos a Enter. Ahí apuntamos el número en formato aaa.bbb.ccc.ddd que aparece como Dirección IP
Estos serian los cambios necesarios, ahora podríamos cerrar la sesión de Windows de la maquina virtual y la consola de vmware nos mostraría algo así
Ahora podemos cerrar tranquilamente la consola de VMware Server (la maquina seguiría corriendo en segundo plano).
Ahora en una venta deTerminal escribiríamos el siguiente comando
rdesktop -A -s "c:\seamlessrdp\seamlessrdpshell.exe c:\windows\explorer.exe" IP_maquina_virtual -u usuario -p contraseña
donde
- rdesktop, es la aplicación para el control remoto de la sesión de Windows
- -A, es la opción que activa la opción SeamlessRDP, ventanas independientes del escritorio
- -s, es la opción que le indica que interprete de comandos (shell) vamos a emplear
- "c:\seamlessrdp\seamlessrdpshell.exe c:\windows\explorer.exe", es la cadena que usamos como parámetro de -s, para decirle que vamos a ejecutar la aplicación explorer.exe a través del shell seamlessrdpshell.exe que es el que nos va a permitir emplear las ventanas independientes del escritorio.
- IP_maquina_virtual, es la dirección IP de la maquina virtual que anotamos anteriormente
- -u usuario, es el nombre de usuario de Windows que vamos a emplear
- -p contraseña, es la contraseña para ese usuario.
El resultado de este método se puede ver en este vídeo
Aqui lo que se ve es que se ha lanzado la ejecución del explorer, pero sin el escritorio, con lo que tenemos acceso al Menu Inicio y a todas las aplicaciones y opciones. Pero también es posible lanzar aplicaciones independientes, sin la barra de inicio y el menú, lo único que hay que hacer es sustituir la ruta c:\windows\explorer.exe por la que corresponda con la aplicación que deseemos ejecutar.
También podríamos crear un script que arrancara la maquina virtual y arrancara la aplicación. La maquina virtual se podría apagar con otro script o simplemente se cerraría al apagar el equipo, pero hay que tener en cuenta que esta consume recursos, no muchos si no está haciendo nada, pero consume.
Actualización 18/07/2007 21:18: Gracias a la contribución de Aurelio en los comentarios, he podido ampliar el metodo para evitar que se de un caso como el suyo.
Fuentes: VentureCake, Ubuntu Community Docs
- Versión para impresión
- citar
- 16075 lecturas



- responder
- citar
Enviado por Aurelio (no verificado) el Mar, 17/07/2007 - 10:31.Ahora mismo no estoy en el ordenador donde tengo instalado el vmware y la maquina virtual de Windows XP para hacer las pertinentes pruebas y corroborartelo, pero creo que sé a que puede ser debido lo que te está pasando.
Revisa en las opciones de Usuarios del Panel de Control, que tengas activadas las siguientes opciones:
- Emplear la pantalla de Bienvenida (o algo parecido, hablo de memoria, no tengo aqui un windows a mano)
- Cambio rapido de usuarios
Estas opciones tienes que tenerlas activadas, si no es asi, activalas.
Pruebalo y dime algo, en cuanto tenga oportunidad lo probaré yo mismo.
Saludos
- responder
- citar
Enviado por joe di castro el Mar, 17/07/2007 - 16:21.Efectivamente, ese era el problema. Ya delante del equipo donde tengo el vmware, he conseguido reproducir el problema que tú tenias y se debe a eso, para solucionarlo has de hacer lo siguiente:
Ir a Menu Inicio, Panel de Control, Cuentas de usuario y ahí pulsar en Cambiar la forma en la que los usuarios inician y cierran sesión
Tendrás una pantalla como esta y tendrás que tener las dos casillas activadas.
Saludos
- responder
- citar
Enviado por joe di castro el Mié, 18/07/2007 - 20:04.- responder
- citar
Enviado por TommyX (no verificado) el Mié, 08/08/2007 - 09:23.No acabo de entenderte bien, cuando hablas de terminal te refieres a la terminal de comandos de Kubuntu o a la ventana de la sesión de Windows? repitemelo con más detalle, a ver si entiendo lo que me intentas explicar.
Para solucionar lo de la resolución instalale las vmware tools, esto lo haces iniciando sesión en la maquina virtual y desde el menu del VMware Server ir a VM => Install VMware Tools y seguir las instrucciones del instalador en el Windows.
Saludos
- responder
- citar
Enviado por joe di castro el Mié, 08/08/2007 - 11:07.Estuve estudiando la guia que has dejado y me parece excelente, muy detallada y prolija.
El tema es que al intentar efectuar la conexion desde el terminal me da error, textualmente dice:
ERROR: connect: Conexión rechazada.
La linea la escribo tal lo indicas, poniendo la IP correcta de acuerdo a lo que indica el ipconfig del xp. tambien verifico que el nombre de usuario este bien escrito, lo mimso que la contraseña.
EN la ventana de usuario de xp active los dos tildes tanto de inicio como cierre de sesion. Tambien aplique el cambio en el registro, aunque supongo que eso no tiene nada que ver con la conexion en si.
Si se te ocurre por donde puedo buscar el error te agradezco.
De todos modos un abrazo y muchas gracias por tu instructivo.
Saludos
Sergio
- responder
- citar
Enviado por Sergio (no verificado) el Mar, 04/09/2007 - 01:38.Si, eso te ocurre porque aún no estan arrancados los Terminal Services.
Si al Windows le lleva un tiempo arrancar en la máquina virtual, es posible que éstes intentando acceder y el servicio aún no esté levantado.
Para ello repite el comando varias veces (ya sabes no hace falta volverlo a escribir, con la tecla flecha arriba nos vuelve a aparecer el comando y solo tenemos que pulsar enter) y verás como a la 2ª o 3ª vez te entra.
Si después de varias veces no consigues que establezca la conexión remota con el windows, comprueba la configuración correcta del servicio Terminal Services y comprueba que este configurado como Tipo de Inicio -> Automático. Si no lo hicieras así, tendrías que iniciar sesión cada vez en el Windows dentro de la consola del VMware y luego salir para poder conectar con el a través del rdesktop.
De nada, el conocimiento es de todos, compartirlo no es más que agradecer la labor de otros muchos que lo han hecho antes.
Un abrazo y un saludo
- responder
- citar
Enviado por joe di castro el Mar, 04/09/2007 - 08:07.Problema solucionado, sin darme cuenta habia activado el snapshot y aparentemente los cambios no quedaban registrados en el disco virtual al cerrar la aplicacion.
Todo funciona tal como lo indicas y la configuracion de la pantalla es correcta. Lo unico que termina sin cerrarme es la imposibilidad de conectar una red con el Ubuntu, ni siquiera con otra red windows que tambien esta instalada y a la que el Ubuntu se conecta sin problemas. No se muy bien porque pues Internet si tiene a traves del Ubuntu (por la 2da opcion, creo que Nat se llama), el bridge no lo reconocio. En otro foro lei que la version anterior del Ubuntu (antes del 7.04) si lo reconocia, pero a partir de esta solo se conecta por Nat. Supongo que aca debe estar el problema, ya que no tiene una IP propia sino que se la da el Ubuntu. ¿vos pudiste resolverlo de algun modo?
- responder
- citar
Enviado por Sergio (no verificado) el Mié, 05/09/2007 - 03:45.Con el VMware Server si no me equivoco, debería poder hacerse sin problemas esa red entre servidor y anfitrión con la opción Host-only. Con el VMware Workstation si que es muy sencillo crear esa red, incluso entre distintas máquinas virtuales. El VMware Server es una versión con menos opciones que la Workstation, además que la Workstation no es gratuita.
La verdad, nunca he establecido una red entre mis VMs y mi sistema operativo anfitrión, siempre he utilizado el FTP para mover archivos entre ellas. Lo hago por seguridad, empleo las VMs para correr servidores o hacer pruebas y prefiero tenerlas aisladas de mi sistema principal.
Saludos
- responder
- citar
Enviado por joe di castro el Mié, 05/09/2007 - 08:13.Hola, lo primero, darte las gracias por esta estupenda guia, mucho mas facil de seguir los how-to de las guias y foros de ubuntu (por cierto, te sobra una e en la linea con el comando completo de rdesktop, esta escrito redesktop) y me estoy volviendo loco porque cada vez que intento ejecutar cualquier programa (explorer.exe, calc.exe, etc etc) me dice que no puede ejecutar el programa. El mensaje de error es "Unable to Launch the requested application" y la verdad, estoy "ligeramente" desesperado y perdido...
Alguna sugerencia, idea o recomendacion?
Gracias!!
- responder
- citar
Enviado por ososxe (no verificado) el Jue, 06/09/2007 - 19:56.Gracias por el aviso, ya he corregido el error de sintaxis del comando.
He intentado reproducir tu error y lo he conseguido, me ocurre cuando escribo mal la ruta de la aplicación en Windows.
Es decir en el comando
rdesktop -A -s "c:\seamlessrdp\seamlessrdpshell.exe c:\windows\explorer.exe" IP_maquina_virtual -u usuario -p contraseña
La parte que está en negrita. Si esa ruta está equivocada, te da justamente ese error.
Revisa que la ruta a las aplicaciones que quieres ejecutar es la misma que escribes en la línea de comandos.
Saludos
- responder
- citar
Enviado por joe di castro el Jue, 06/09/2007 - 21:06.- responder
- citar
Enviado por ososxe (no verificado) el Vie, 07/09/2007 - 08:51.Me he fijado, tambien me da este error en la consola:
/dev/dsp: Dispositivo ó recurso ocupado
- responder
- citar
Enviado por ososxe (no verificado) el Vie, 07/09/2007 - 09:08.Al mensaje de error de /dev/dsp no le hagas ni caso, simplemente es que no te deja acceder al dispositivo de audio. Ese no es el problema.
Por otro lado, estás empleando algún tipo de firewall en el XP de la maquina virtual?
- responder
- citar
Enviado por joe di castro el Vie, 07/09/2007 - 09:36.Es este el error que te da?
Si es asi, has comprobado que la ruta que aparece en la ventana de error es la misma que has introducido?
- responder
- citar
Enviado por joe di castro el Vie, 07/09/2007 - 09:45.Efectivamente, ese es el error, pero lel path esta comprobada y requetecomprobada que es la correcta
en la maquina virtual tengo activado el FW de XP y un antivirus, probare con el FW.
- responder
- citar
Enviado por Anonimo (no verificado) el Vie, 07/09/2007 - 18:01.Me respondo a mi mismo: Habiendo deshabilitado el FW, y cambiado la C:\ de la ruta por c:\, me ejecuta el explorer, calc, etc.
Ahora solo me queda averiguar porque , teniendo la c:\ puesta, no me ejecuta el programa que realmente me interesa. No se si sera por el tema de las mayusculas en la ruta, o porque tiene un acento en "Menú de Inicio"... seguire investigando
- responder
- citar
Enviado por ososxe (no verificado) el Vie, 07/09/2007 - 18:29.A ver, si intentas ejecutar un programa, la ruta del Menu de Inicio probablemente te llevará al acceso directo, pero no al archivo ejecutable. Por eso no te funciona.
Tienes que averiguar la ruta real del programa. Es decir, te vas al acceso directo en el Menú de Inicio y con el botón derecho pulsas sobre Propiedades. Allí eliges la pestaña Acceso Directo y la ruta real de la aplicación es la que te aparece en Destino.
- responder
- citar
Enviado por joe di castro el Vie, 07/09/2007 - 18:44.Lo se, lo se.. he probado creando un acceso directo, con el path completo al ejecutable, el path al menu de inicio, el path a la orden del ejecutable...
no se si el problema es que intento ejecutar una aplicacion de CRM que es un front end para conectarse a unos servidores via web. El lunes seguire investigando desde el trabajo.
Y gracias por toda la ayuda!!!
- responder
- citar
Enviado por ososxe (no verificado) el Vie, 07/09/2007 - 21:38.Tambien se puede correr con virtualbox, mismo sistema, solo que, para correr en "background" el Xp necesite iniciarlo en una xterminal nueva.
Disculpen si parece deshubicado, simplemente supe de varios usuarios de virtualbox que intentaron hacerlo, pero solo encontraron "guias" para vmware.
Muchas gracias.
Slds....
- responder
- citar
Enviado por wen (no verificado) el Vie, 07/09/2007 - 14:07.Yo lo he hecho con VirtualBox, pero lo mas que he llegado a lograr ha sido a tener un escritorio de XP sin bordes, pero no he logrado que aparezcan solo las ventanas de las aplicaciones, si no que aparecia todo el escritorio.
Si supieras de una guia o alguna indicacion para hacerlo con virtual box, te estaria agradecido
- responder
- citar
Enviado por ososxe (no verificado) el Vie, 07/09/2007 - 18:04.La última versión de VirtuaBox, la 1.5.0, ya soporta las ventanas Seamless de forma nativa.
En esta entrada de Entre Tuxes y Pepinos tienes más información.
- responder
- citar
Enviado por joe di castro el Vie, 07/09/2007 - 18:35.- responder
- citar
Enviado por ososxe (no verificado) el Vie, 07/09/2007 - 21:42.Muy bueno el tutorial!!!. Me ha funcionado todo a la primera :-). Ya estaba usando VMWare desde hacía tiempo para ejecutar alguna aplicación de la que no he encontrado sustituto en linux, pero no tenía integradas las ventanas. La única pega es que a veces se quedan un poco pilladas, pero en general va muy bien.
Saludos, Iván.
- responder
- citar
Enviado por Iván (no verificado) el Sáb, 22/09/2007 - 20:02.Hola!
Primero de todo dejame felicitarte por tu blog y en especial por este artículo, la verdad es que si realmente consigo que me funcione me sera de gran utilidad.
He seguido los pasos uno a uno, pero no consigo hacerlo funcionar.En el último momento cuando ya estoy en la terminal de linux y le doy la orden de conexion este me devuelve:
ERROR: recv: Connection reset by peer
He provado con todas las formas de conexion que ofrece vmware, pero en el mismo blog dices que es indiferente y ahora vuelvo estar con Bridged.
Si te sirve, estoy utilizando como sistema nativo, Ubuntu Feisty y dentro de vmware server el windows xp profesional sp2. tengo desactivado el firewall y la ip esta introducida manualmente en la targeta de red.
Que me falta??
Muchas gracias por cualquier aporte!
- responder
- citar
Enviado por Lois (no verificado) el Dom, 23/09/2007 - 18:43.Bueno, este es uno de esos errores que dan mucha guerra...
En principio podría seria un error de licencia de Terminal Server, aunque esto seria muy raro en XP Professional, ya que incorpora una licencia para una conexión por maquina. De todas maneras prueba a ver si es de ello, para eso intercala entre la opción -A y la opción -s, la opción -n prueba donde prueba es el nombre de un usuario de prueba de TS que tendría una licencia de 90 días, podrías cambiar ese usuario por otro distinto, por ejemplo, prueba2 u otro cualquiera.
También podría ser una conexión mal cerrada o colgada, prueba a reiniciar la maquina virtual o con otro usuario.
Por cierto, si no tienes la última versión del vmware server, la 1.0.4, no pierdes nada actualizandola, nunca se sabe, además corrige unos cuantos fallos de seguridad.
Saludos
- responder
- citar
Enviado por joe di castro el Dom, 23/09/2007 - 21:21.eres un crack! tenia la version 1.0.3 de vmware y he probado con la 1.0.4 y perfecto!
Aprovecho por preguntarte otra cosa. Al final de este articulo hablas de la posibilidad de abrir un programa en concreto sin necesidad de abrir la barra de inicio. He sustituido c:\windows\explorer.exe por c:\Archivos de programa\CCleaner\CCleaner.exe (por poner un ejemplo) y este no se abre.
Tengo que cambiar algo mas? en realidad lo quiero para otro programa pero supongo que sera el mismo procedimiento, no?
Muchisimas gracias!
- responder
- citar
Enviado por Lois (no verificado) el Lun, 24/09/2007 - 00:34.Debería funcionar así, sin problemas.
Eso si, ten en cuenta una cosa, el programa tardará tanto en abrirse como lo haría en Windows, solo que aquí no tienes una referencia como una flecha de ratón con un reloj. Te lo digo por si abres algún programa algo pesado que tarde en cargar.
Saludos
- responder
- citar
Enviado por joe di castro el Lun, 24/09/2007 - 08:57.Después de reiniciar ha funcionado. Quizás era problema de session de usuario.
Como todo, ahora a trabajar con ello y a ver si funciona bien que es donde se detectan los errores, o no!
Gracias por compartirlo!
Saludos!
- responder
- citar
Enviado por Lois (no verificado) el Lun, 24/09/2007 - 17:56.De nada, me alegro de que te haya sido útil. Y gracias a ti por reportarlo.
Saludos
- responder
- citar
Enviado por joe di castro el Lun, 24/09/2007 - 18:16.Hola!
Como ya te dije me funciona perfecto, pero me gustaria saber si se pueden implementar algunas opciones para depurarlo.
Cuando ejecutamos algun programa con rdesktop y este lo cierras sigue corriendo en la terminal, si a la vez cierras esa terminal la sesion de windows sigue abierta y por lo tanto si vuelves a abrir el programa este no responde.
Lo que hago es reiniciar la maquina virtual windows y este me pregunta por el usuario activo.
Se podria dar la orden desde una terminal a rdesktop que cerrara esa sesion? como? no encuentro mucha info al respeto.
Muchas gracias por las molestias!
- responder
- citar
Enviado por Lois (no verificado) el Lun, 01/10/2007 - 20:55.Si, claro que se puede. Aunque eso que te sucede tampoco ocurre con todas las aplicaciones.
Pero el quid de la cuestión no está en el rdesktop, está en Windows, que es a quien le debes decir que cierre la sesión, ya que el rdesktop da por terminada la conexión al cerrar la aplicación, pero no cierra la sesión.
Para ello tienes dos utilidades en linea de comandos que nos pueden servir para este caso, según quieras hacer una u otra cosa. Las utilidades son:
Entonces con la primera utilidad, tsdiscon, podriamos hacer lo que buscas, que es que al ejecutar una aplicación independiente en modo seamless podamos cerrar la sesión al mismo tiempo que se cierra la aplicación. Este comando admite una serie de parámetros como son el session id (el identificador de la sesión), el nombre de la sesión y el nombre del servidor. En nuestro caso solo nos interesa el session id, que será suficiente para identificar la sesión que queremos cerrar. En este parámetro el numero 0 siempre será el identificador de la consola principal, que es la local, la cual no empleamos con el terminal server. Para el resto de sesiones el identificador es un contador autonumérico que comienza en 1 y sigue en 2, 3, 4, ...n para las sucesivas n consolas. Como en el caso del Windows XP solo se nos permite una consola remota al mismo tiempo y además es la primera que iniciamos con el rdesktop, este identificador para nosotros será 1.
Ahora lo primero que podriamos pensar es bien, ejecutamos este comando con el rdesktop y asunto solucionado. Pero no, porque el problema es de esta forma cerraríamos la sesión que abrimos con la aplicación, pero estaríamos abriendo una nueva para el tsdiscon.exe que quedaría abierta y no solucionamos nada, de hecho veríamos que la aplicación se abre de nuevo. Hay una forma de hacerlo que además es más eficaz y "elegante" por ser desantedida.
La forma de hacerlo es emplear los archivos de proceso por lotes de Windows (.bat). Porque los archivos por lotes funcionan de forma predeterminada de manera que un paso se ejecuta cuando acaba el anterior. Voy a explicarlo con un ejemplo. Imaginemos que queremos arrancar la calculadora en mode seamless y que cuando la cerremos se cierre también la sesión. Para ello iniciamos sesión en la maquina virtual de Windows y creamos un archivo .bat en el disco duro, por ejemplo el archivo C:\calculadora.bat. En este archivo añadiríamos las siguientes lineas:
@echo off
c:\windows\system32\calc.exe
c:\windows\system32\tsdiscon.exe 1
La primera linea lo que nos hace es que nos oculta los procesos que se van ejecutando en la linea de comando, la segunda nos abre la calculadora y la tercera, que se ejecuta después de cerrar la calculadora, nos ejecuta el programa tdiscon.exe que nos cerrará la sesión 1 (la que habíamos abierto).
Ahora para hacer esto con el rdesktop lo haríamos de la siguiente manera:
rdesktop -A -s "c:\seamlessrdp\seamlessrdpshell.exe c:\calculadora.bat" IP_maquina_virtual -u usuario -p contraseña
Y ya nos funcionaria como tu quieres, cierras la calculadora y se cierra la sesión. Pues eso mismo pero cambiando la calculadora por otra aplicación, es lo que necesitas.
Ahora, si te interesa apagar la maquina y no tener que abrir la consola de vmware server para apagar el windows, podrías por ejemplo cerrar la maquina virtual desde una linea de comandos con los parámetros del vmware, pero no seria un cierro limpio del windows. Para eso lo mejor es que puedas apagar correctamente el windows desde un comando de consola, y ahi es donde nos encaja el tsshutdn.exe. Y aqui si que podemos llamarlo directamente desde el rdesktop, ya que no importa que nos abra una sesión nueva y nos deje la otra colgada, porque antes de apagar el windows, cerrará todas las sesiones. Para ello haríamos lo siguiente:
rdesktop -s "tsshutdn 0 /delay:0" IP_maquina_virtual -u usuario -p contraseña
Donde el primer 0 seria el numero de segundos desde que se da la orden hasta que queremos que se apague la maquina y /delay:0 el tiempo en segundos en que se apagaría la maquina desde que se avisa a cada usuario de una sesión remota. Al poner los dos valores a 0, el windows de la maquina virtual se apaga inmediatamente. En este caso he quitado el parametro -A del rdesktop para que el proceso sea visualmente más limpio.
Ahora con todo esto podriamos preparar un script para linux que desde un acceso directo nos arrancara la aplicación y que cuando la cerráramos nos cerrara la sesión. O un acceso directo que nos apagara correctamente el windows y nos parara la maquina virtual. O incluso un script que nos arrancara la maquina virtual del windows y después la aplicación directamente. Vamos, que se puede automatizar todo casi hasta donde queramos.
Saludos, de nada, no es una molestia, esto servirá para más gente con la misma duda.
- responder
- citar
Enviado por joe di castro el Mar, 02/10/2007 - 19:12.Increible!
A ver si hoy lo puedo probar, seguro que funciona!
Me aprovecho un poco mas, pero como bien dices esto tambien sirve para la gente que llegue a tu blog.
Hay manera de abrir dos programas de windows a la vez?
Por ejemplo, tener un enlaze en ubuntu a la calculadora y otro al notepad. Que pudiras abrir uno y despues el otro, pero sin cerrar el anterior, entonces manteniendo esa sesion de ese usuario.
Ah! ahora que me acuerdo, me di cuenta que el teclado no está igual configurado.. Esto imagino que es de opcion de rdesktop, como lo puedo configurar?
Muchisimas gracias otra vez!
- responder
- citar
Enviado por Lois (no verificado) el Mié, 03/10/2007 - 11:19.A ver, si puedes abrir dos programas a la vez, pero no de la forma que me dices. Windows XP solo te permite una conexión simultanea de terminal server, por lo que si intentas abrir otro programa en modo seamless con rdesktop, no te funcionara.
Ahora, lo que si puedes hacer es usar los ficheros .bat de Windows para abrir cuantos programas quieras. Por ejemplo, un fichero .bat para abrir la calculador, el bloc de notas y el paint, seria así:
@echo off
start "" "C:\Windows\System32\calc.exe"
start "" "C:\Windows\System32\notepad.exe"
C:\Windows\System32\mspaint.exe"
C:\Windows\System32\tsdiscon.exe 1
Eso si, ten presente que la ultima aplicación antes de ejecutar el tsdiscon.exe no debe iniciarse con start "" "aplicacion.exe" para que la sesion solo se cierre cuando cierres la ultima aplicacion que quede abierta.
Aunque si vas a andar conmutando entre muchos programas de forma continua, casi es mejor que arranques el explorer.exe, aunque te aparezca la barra de inicio en la parte de abajo de la pantalla.
En cuanto a lo del teclado, pues a mi me lo escoge perfectamente, pero si te da problemas es fácil de solucionar, simplemente tienes que emplear el parámetro -k del rdesktop. En este caso, con un teclado español, la cosa quedaría así:
rdesktop -A -k es -s "c:\seamlessrdp\seamlessrdpshell.exe c:\programa.bat" IP_maquina_virtual -u usuario -p contraseña
De nada, si sigues teniendo dudas, no dudes en preguntar.
Saludos
- responder
- citar
Enviado por joe di castro el Mié, 03/10/2007 - 19:47.El pesao otra vez!
Muchas gracias por contestar tan rapido en serio!. Mira he probado lo de ejecutar el .bat y no me va. Siguiendo tus instrucciones:
rdesktop -A -k es -s "c:\seamlessrdp\seamlessrdpshell.exe c:\programa.bat" IP_maquina_virtual -u usuario -p contraseña
He probado de ejecutar dentro del windows ese bat y efectivamente, abre la aplicacion en cuestion y al cerrar cierra sesion, pero desde rdesktop me da siempre este error:
ERROR: connect: Connection refused
No es problema de ip ni usuario ni nada de esto, ya que ejecutando explorer.exe funciona, y el programa directamente tambien, es al llamar al bat que no quiere.
Que puede ser? El bat esta en la raiz, en la C tal como esplicas..
Saludos!
- responder
- citar
Enviado por Lois (no verificado) el Mié, 03/10/2007 - 20:40.Que te rechaze la conexion es en principio porque el servicio terminal service no esta iniciado. Comprueba que este iniciado y prueba a reiniciar la maquina virtual.
Lo que es raro es que te ocurra solo con el .bat. He probado varias cosas y no he conseguido reproducir ese error en mi maquina para que me suceda solo con el .bat
Saludos
- responder
- citar
Enviado por joe di castro el Mié, 03/10/2007 - 21:00.Ya he probado varias veces de reiniciar la maquina virtual y la sesion.. pero nada. Ya te digo que haciendo lo del tutorial: ejecutar una aplicacion en concreto como puede ser el explorer.exe este funciona sin problemas. Es al ejecutar el .bat que no va.
Seguire probando a ver..
- responder
- citar
Enviado por Lois (no verificado) el Mié, 03/10/2007 - 23:11.Nada, imposible, no he conseguido reproducir ese error por muchos cambios que haya probado.
Una pregunta, puede que hayas efectuado o restaurado algun snapshot?
Tienes el inicio del servicio terminal service en automatico? Es como si algo que haces parara ese servicio. Si lo tuvieras en manual podria llegar a pasar eso en determinadas circunstancias.
Si eso no te ayuda, puedes ponerme el fichero .bat que tienes, a ver si podemos avanzar algo?
Seguro que es una tonteria, a ver si podemos solucionarlo.
Saludos
- responder
- citar
Enviado por joe di castro el Jue, 04/10/2007 - 10:25.Saludos,
Pues bien, primero quisiera felicitarte por el blog y cada una de las explicaciones. Soy usuario de win y pues como dice, he estado amarrado a ese SO por que hay programas que no puedo dejar. Pero hoy me he enterado que hay posibilidades de tener programas de win dentro de linux y pues tu blog es uno de los mejores que he encontrado (por no decir el mejor) y pues intento migrar a linux definitivamente.
He utilizado VMWare hace tiempo, pero al reves, SO anfitrion Win y montaba Linux, pues solo tenia que hacer unos programas. El unico problema que vi es que la maquina virtual, genera un "disco virtual" para el SO, y la información generada dentro de la maquina virtual, pues se quedan ahi (por cierto, perdi informacion por eso)
Mi pregunta es la siguiente: Con esto que tu mencionas, la informacion generada por algún porgrama de win, se guarda en el dico virtual, o es posible direccionarlo a alguna parte del disco duro, donde puede estar respaldado?
De antemano, gracias.
- responder
- citar
Enviado por Vicho (no verificado) el Dom, 28/10/2007 - 18:53.Si, se puede hacer. Hay varias opciones.
Como ves, opciones hay varias, y eso que no menciono la de crear una red, que para mí es la más engorrosa y que para lo que necesitas no es necesaria. Espero haberte orientado.
Saludos
- responder
- citar
Enviado por joe di castro el Dom, 28/10/2007 - 21:59.Saludos de nuevo,
Te agradezco de antemano la respuesta rápida de mi duda. Si bien, la versión WorkStation seria la mejor solución, el problema es el pago del mismo (aunque lo podría "comprar" XD) pero eso de la ideología de software libre, open source y demás, que es la filosofía principal de linux, no me pareceria tan correcto hacerlo.
Así que la solución mas viable es un servidor de