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
- 29099 lecturas
Ventana del escritorio
Ahora mismo no estoy en el
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
Confirmado
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
problemas
No acabo de entenderte
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
Error de conexion
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
Si, eso te ocurre porque
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
Problema solucionado, sin
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?
Con el VMware Server si no
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
no me ejecuta ningun programa
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!!
Gracias por el aviso, ya he
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
La ruta fue lo primero que
Me he fijado, tambien me da
Me he fijado, tambien me da este error en la consola:
/dev/dsp: Dispositivo ó recurso ocupado
Al mensaje de error de
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?
Es este el error que te
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?
Efectivamente, ese es el
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.
Me respondo a mi mismo:
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
A ver, si intentas ejecutar
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.
Lo se, lo se.. he probado
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!!!
Virtualbox
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....
Yo lo he hecho con
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
La última versión de
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.
Lo volvere a intentar con
Genial
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.
No lo consigo
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!
Bueno, este es uno de esos
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
perfecto!
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!
Debería funcionar así,
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
Funciona
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!
De nada, me alegro de que
De nada, me alegro de que te haya sido útil. Y gracias a ti por reportarlo.
Saludos
Enviar un comentario nuevo