Actualización desatendida de Windows 8 Enterprise a Windows 8.1 Enterprise Preview

Hace poco más de un mes, escribí aquí el procedimiento para realizar una actualización desde Windows 8/8 PRO a Windows 8.1 PRO Preview desde el archivo ISO, pero los que tuvieramos Windows 8 Enterprise no ibamos a poder hacer esto mismo, así que el unico camino era instalación en limpio de Windows 8.1 Pro Preview o bien, esperar hasta que se liberara la edición Enterprise de 8.1. Si bien tardó un poco más de lo prometido por Microsoft, desde el día de ayer está disponible finalmente la descarga gratuita de Windows 8.1 Enterprise Preview enfocada a Profesionales de TI desde el sitio web de Microsoft.

Hoy quiero compartir el procedimiento para aprovechar un parámetro especial que tiene el instalador de Windows 8.1 Enterprise (No lo he probado con el de Pro), para que la actualización desde Windows 8 Enterprise sea completamente automatizada y solo tengamos que esperar a que termine. Por supuesto, el procedimiento manual descrito en el anterior artículo para PRO sigue siendo igual y totalmente soportado, pero de esta forma automatizada podremos garantizar upgrade desde soluciones como System Center Configuration Manager y Microsoft Deployment Toolkit. Para mostrarlo sobre un ambiente real, aproveché un equipo portátil que tenía con Windows 8 Enterprise para hacerle el upgrade y capturar el proceso con el fin de compartirlo por aquí.

Requerimientos

– Un equipo donde esté instalado Windows 8 Enterprise.

– El archivo ISO de instalación de Windows 8.1 Enterprise Preview. Lo pueden descargar desde aquí:
http://technet.microsoft.com/es-es/windows/hh771457.aspx?ocid=wc-blog-wfyb

– Podemos simplemente montar la imagen ISO en nuestro Windows 8 Enterprise y proceder, o bien, como fue mi caso, preparar un dispositivo USB con los archivos de instalación de Windows 8.1 Enterprise Preview y hacer el upgrade desde allí.

Actualizando desde Windows 8 Enterprise a 8.1 Enterprise Preview

El proceso es realmente sencillo, y para empezar, quiero ilustrar un poco cómo estaba mi escritorio y mi Pantalla de Inicio desde Windows 8 Enterprise antes de la actualización:

Pantalla de Inicio:

U1

Escritorio:

U2

En mi equipo tenía instalado paquetes como ADK, Visual Studio 2013, SDK e incluso SQL Server 2012 para BI, entre otras aplicaciones… era una buena prueba para ver qué tal se comportaría la actualización.

Naturalmente, es necesario cerrar todas las aplicaciones que se estén ejecutando, y además verificar que todo lo que tengamos instalado sea compatible con Windows 8.1, esto se puede hacer ejecutando el Setup.exe para iniciar el asistente y ver qué nos pide desinstalar, porque si no verificamos esto, el proceso automatizado empezará pero no continuará si detecta aplicaciones no compatibles.

Ahora, sea desde los archivos de instalación, desde la imagen ISO que esté montada, o como en mi caso, desde el dispositivo USB preparado para instalación, debemos ejecutar el Setup.exe con el parámetro de /auto:upgrade, pero para esto, es necesario que abramos un Símbolo del Sistema, navegar hasta el directorio o unidad (Con el comando de cd) y desde allí ejecutar:

Setup.exe /auto:upgrade

U4

*Nota: En la captura anterior, F: correspondía a la unidad USB donde estaban los archivos de instalación preparados de Windows 8.1 Enterprise Preview.

¡Todo listo! A partir de aquí, si no hay algún problema como el que mencioné antes de aplicaciones incompatibles, veremos rápidamente todas las ventanas normales del asistente de actualización de Windows, e iniciará un primer proceso de actualización antes de reiniciarse:

WP_20130730_001

Después de esto, pasaremos por varios reinicios que incluyen la detección de dispositivos y algunas configuraciones adiciones que hace Windows sobre su nueva actualización. Dependiendo de los recursos físicos, el proceso podría tardar entre 20 a 1 hora mientras termina. Cabe tener en cuenta que al finalizar, tendremos disponible el mismo usuario, configuraciones, aplicaciones y archivos con solo haber ejecutado el comando anterior.

Así se veía mi equipo después de proceder con el upgrade:

Pantalla de Inicio:

U5

Escritorio:

U6

Pensemos que en un escenario corporativo, esta opción será perfecta para disponer a través de alguna solución como SCCM o MDT la actualización a cualquier usuario sin mayor esfuerzo y totalmente automatizado.

Intentaré cubrir el escenario propio con Microsoft Deployment Toolkit (MDT) en un futuro para ver el procedimiento que debería seguirse y los resultados.

Espero sea de utilidad.

Saludos,

Checho

La ventana fantasma de “Explorer.exe” al iniciar sesión en Windows 8, Autoruns y su solución

scan_win_network

Este es de los artículos que nacen de un momento a otro, pues en realidad llevaba algunos días documentándome acerca de otra función de la API de Windows para exponerla aquí, pero hoy, justo antes de un evento en el que iba a participar como speaker en Windows 8, un compañero me expuso el problema que estaba experimentando con su equipo y al verlo, supe que no podía dejar pasar la oportunidad para intentar solucionarlo y documentar para dejar huella en mi blog, pues me pareció de lo más interesante y resultó ser la segunda vez que lo veía, así que probablemente hayan bastantes personas con este problema por estos días.

El problema

El inconveniente se presentaba cada vez que iniciaba por primera vez sesión en Windows 8, pues aparecía una ventana bastante molesta con el título de “Explorer.exe”, sin ningún texto y hasta que no se le presionaba tres veces el botón de Aceptar, la ventana no desaparecía:

E1

Naturalmente, nada en Windows que presente un comportamiento tan extraño, y que ni siquiera tenga un simple texto es normal. Como estaba iniciando con Windows, procedí a buscar en el nuevo Administrador de tareas, pestaña de Inicio (Que como probablemente saben, remplazó la funcionalidad que se encontraba en la herramienta de MSCONFIG), para ver si podía encontrar la procedencia o por lo menos el proceso al que correspondía este mensaje, pero lamentablemente el Administrador de tareas me mostraba todo lo que estaba iniciando con Windows, menos lo que ocasionaba el mensaje:

E2

Como no pude ver nada con el Administrador de tareas, supuse que lo que sea que fuera, estaba iniciando desde una ruta que para Windows puede no ser normal que se inicien procesos, pero antes de entrar en eso, ejecuté Process Explorer para ver cuál era el nombre real del proceso que sacaba la ventana, pues utilizando la función de encontrar proceso arrastrando el icono de la lupa al mensaje, para mi sorpresa encontré que estaba ligado al verdadero Explorer.exe de Windows:

E3

La firma digital estaba correcta, y no pude ver ningún tipo de handle extraño hasta ese momento. Ahí fue donde me preocupé un poco…

La causa

Para poder saber cómo estaba iniciando el mensaje, y quizá la razón del por qué, debía saber el directorio exacto de ejecuión, y no había mejor herramienta que Autoruns de Sysinternals.

Vale recordar que la característica principal de Autoruns, es encontrar absolutamente todo lo que se está cargando con Windows, esto incluye controladores, extensiones del Explorador de Archivos, Tareas programadas, entre muchas otras; casi nada (Por no decir nada) se le escapa a Autoruns, y es posible hacer filtros de muchas formas, pues distribuye diferentes pestañas e incluye funcionalidades adicionales para hacer esto mismo desde un entorno de Windows PE/RE por ejemplo.

Lo que hice fue ir a la pestaña de Logon, que pertenece a lo que está iniciando directamente con el usuario, y para mi fortuna, ahora sí encontré algo interesante:

E4

El color amarillo indicaba que Autoruns no podía encontrar el archivo, pero lo que me llamó la atención fue el nombre bastante extraño de su ejecutable (ccyrcoi.com) y además que aunque se refierenciara todo a un directorio completo, es decir a C:UsersJUAN CAMILO ORTIZLocal SettingsTemp, lo estaba dividiendo de una forma muy extraña, y que probablemente estaba ocasionando la confusión de Autoruns. Por otro lado, no es muy común que algo se esté ejecutando en la clave de Registro:
HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindowsLoad.

Para terminar de asegurarme, utilicé la función de Jumpt To en Autoruns, haciendo clic derecho sobre la clave para que me abriera directamente el Registro de Windows y ahí pude ver algo un poco más preciso:

E8

Como ven, el valor de Load tenía como contenido toda la ruta y el archivo extraño correctamente. Lo que hice fue navegar manualmente desde el Explorador de archivos y en primera instancia, me sorprendí porque no aparecía nada, incluso con los archivos ocultos habilitados para su vista:

E5

Por supuesto, Windows predeterminadamente también oculta los archivos protegidos por el sistema, es decir, extensiones que son familiares para él, así que deshabilité esto desde las Opciones de Carpeta y por fin encontré lo que probablemente estaba ocasionando el problema:

E6

Por su descripción, era un tipo de archivos por lotes, y una aplicación DOS las que estaba iniciando con el equipo. Para mi mala suerte, editarlas no servía de nada, pues tenía caracteres supremanete extraños.

La solución

Para los que experimenten este problema, la solución fue y será bastante sencilla:

Primero ejecutar Autoruns para determinar la ubicación y nombre exacto del archivo que está iniciando, y desde ahí deshabilitar el arranque desmarcando las casillas de la izquierda, después navegar manualmente hasta la ruta, que para este malware siempre será dentro de la carpeta Usuarios (Users), Configuraciones Locales (Local Settings), carpeta Temporal (Temp) y eliminar el o los archivos que allí se encuentren manualmente; por último, navegar hasta la clave de registro:
HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindowsLoad.

Una vez se encuentre el valor, hacer clic derecho y seleccionar Eliminar.

Después de en mi caso seguir las indicaciones anteriores, bastó con reiniciar para probar y en efecto, el mensaje desapareció completamente, al igual que el malware.

*Nota: Es probablemente que en algunos casos el valor de registro no se deje eliminar, así que para estos casos, es suficiente con eliminar los dos archivos, desmarcarlos desde Autoruns y reiniciar para que Windows no referencie más el directorio y deje de salir el mensaje de error.

Espero les sea de utilidad, no olviden para los que utilizan Twitter, me pueden seguir ya que y comentar, sea por ahí o aquí mismo.

Checho

Ir al Escritorio en lugar de Inicio por usuario y para todos los usuarios en Windows 8.1 a través de GPO

Como probablemente ya lo han notado, uno de los aspectos de más polémica de Windows 8, es la incursión de la famosa Pantalla de Inicio que remplaza al tan anhelado y extrañado Menú de Inicio en todos sus aspectos. Aunque no completamente ni exactamente como la retroalimentación de gran parte de los usuarios pedía, Microsoft escuchó y aplicó gran parte de los comentarios generados durante todo el tiempo de vida de Windows 8, que aún no cumple el año y lo llevó a lo que en los próximos meses tendrá la gran actualización denominada Windows 8.1.

Una de las peticiones más demandadas, era la posibilidad –como en Server 2012- de iniciar directamente en el Escritorio de Windows, en lugar de la Pantalla de Inicio, ya que podría ser difícil para un usuario empezar desde un entorno totalmente nuevo, cuando esperaba su entorno de Escritorio familiar. Como se trata de flexibilidad, Windows 8.1 ahora integra un pequeño switch dentro de las propiedades de la Barra de Tareas y Navegación llamada “Ir al Escritorio en lugar de Inicio al iniciar sesión”, lo que permitirá prender Windows y empezar desde el Escritorio directamente sin pasar por la Pantalla de Inicio.

Para habilitar esta configuración, en Windows 8.1, hacemos clic derecho sobre un espacio en blanco de la Barra de Tareas, seleccionamos Propiedades, pasamos a la pestaña de Navegación y habilitamos Ir al Escritorio en lugar de Inicio al iniciar sesión:

S1

*Nota: Aunque hay otras configuraciones muy interesantes con respecto a la Pantalla de Inicio, y que son nuevas en Windows 8.1, me enfocaré únicamente a la primera en este post. Trataré de cubrir algunas de las otras después. Si en algún momento deseamos iniciar en la Pantalla de Inicio, basta con quitar la selección y aplicar los cambios.

Aunque personalmente considero esto muy buena opción, por lo menos en este primer Preview, no existe la forma nativa de configurar el inicio directo al Escritorio para todos los usuarios, ni siquiera existe una política de grupo así que cada usuario tendría que saber que esto existe y realizar el cambio manualmente, o bien personalizarlo en la imagen maestra y copiar el perfil predeterminado. Afortunadamente, con un poco de ayuda de Process Monitor, y una característica muy interesante en el Editor de Políticas de Grupo, podemos simular nuestra propia plantilla e implementar esta configuración para todos los usuarios de una forma centralizada. A continuación, explicaré un poco el comportamiento en el Registro de esta opción y la forma como podemos personalizarlo.

Explorando la configuración en el Registro de Windows

Encontrar los cambios que la pestaña de Navegación, específicamente en el apartado de Pantalla de Inicio realiza en el Registro, fue relativamente fácil:

Basta con ejecutar Process Monitor mientras se realiza el cambio manual, detenerlo, realizar algunas exclusiones que integren rutas que no pertenecen al usuario actual como HKLM y HKCR, además de procesos diferentes a Explorer.EXE, que es el que maneja los cambios en cuanto a Barra de Tareas y Ventanas de Escritorio se refiere; por último, incluir todas las operaciones de escritura, enfocándonos exactamente en RegSetValue.

Con todo lo anterior, deberíamos tener un resultado similar al siguiente:

image

Como ven, hay varias operaciones en la clave de StartPage, creando 4 valores que tienen el nombre de OpenAtLogon, MonitorOverride, MakeAllAppsDefault y DesktopFirst. En principio, solo con la opción de ir directo al escritorio seleccionada, todos tenían valores de cero ( 0 ) en el Registro de Windows, así que tuve que detenerme un poco a ver cuál valor específcamente cambiaba cuando realizaba la configuración, y llegué a OpenAtLogon. Los demás valores corresponden a las otras configuraciones de la Pantalla de Inicio en la pestaña de Navegación.

Ahora, OpenAtLogon recibe dos valores: Cero (0) y Uno (1) que en términos de programación, lo podríamos comparar un un tipo de valor Boolean, es decir, que puede ser Verdadero o Falso. Para este caso, cuando establecemos la configuración por primera vez, antes de crear el Valor, Windows en encarga de ver si ya existe, y en caso de que no, lo crea y después le asigna contenido. Al habilitar el inicio directo al escritorio, el valor –según Process Monitor- recibe un contenido de Cero (0), y de ahí en adelante, cada que se deshabilita, es decir, que se deja iniciar en la Pantalla de Inicio, recibe un contenido de Uno (1). En otras palabras, Cero habilita y Uno deshabilita.

Para obtener todos estos datos, solo requerimos ir a las Propiedades del Evento desde Process Monitor, de esta forma, sabremos este y otros detalles internos, como el tipo de valor que se creó, la operación, entre otras:

S2

Ya sabemos que se crea un valor de tipo REG_DWORD, que tiene un contenido de Cero (0), con nombre OpenAtLogon, y que se establece en:
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerStartPage

Como mencioné al principio, esta configuración no está disponible para crearse de una forma central para todos los usuarios, así que con los datos anteriores podemos proceder y generar nuestra propia política de grupo que lo haga.

Generando la Política de Grupo

Desde Windows Server 2008 R2 en adelante, las Directivas de Grupo incluyen algo llamado Extensión de preferencias de Registro, que nos permite aplicar múltiples operaciones sobre el Registro de Windows por usuario y por máquina; así que una vez sabiendo los datos exactos de una determinada clave o valor, podremos replicarlo a todas nuestras máquinas conectadas al dominio. Como estamos hablando de Windows 8.1, lo ideal es hacerlo sobre un Server 2012 R2, o bien tener las plantillas administrativas actualizadas, aunque para esta liberación aún no se encuentran disponibles.

Lo que haremos será crear una pequeña extensión de Registro para que se establezca el mismo valor de OpenAtLogon en todas nuestras máquinas, para que cuando reciban la actualización de directivas, sigan iniciando directamente en el escritorio.

Desde nuestro Controlador de Dominio, abrimos el Editor de Políticas de Grupo y navegamos hasta Configuración de UsuarioPreferenciasConfiguración de WindowsRegistro.
Hacemos clic derecho en Registro > Nuevo > Elemento de Registro:

image

A continuación, establecemos las siguientes configuraciónes según esta tabla:

Configuración

Contenido

Hive

HKEY_CURRENT_USER

Ruta de Clave

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion
ExplorerStartPage

Nombre de Valor OpenAtLogon
Tipo de Valor REG_DWORD
Dato de Valor 0
 
 
 
 
 
 
 
 
 
 
 
*Nota: La base debe ser Hexadecimal.
 
Debería verse similar a la siguiente captura de pantalla:
 
image
 

En la pestaña de Común (Common), seleccionamos la ficha de “Aplicar una vez y no reaplicar” por si queremos dejar que el usuario personalice este comportamiento con el que más se sienta cómodo:

image

Aplicamos y Aceptamos, de esta forma nos quedará creado nuestra extensión en la ventana de Registro dentro del Editor:

image

Probando la Directiva

El último paso es reiniciar todos los equipos que estén tomando estas políticas, o bien, en cada uno ejecutar desde un Símbolo del Sistema o PowerShell con privilegios elevados el comando: gpupdate /force

image

Cabe aclarar que si actualizamos las políticas con el Gpupdate, nos cambiará la configuración, pero la veremos en acción cuando reiniciemos. Para cada nuevo usuario, el cambio será inmediato y así esté iniciando por primera vez en Windows, entrará directamente al Escritorio.

*Nota: En caso de no querer hacer esto a través de las políticas de grupo, tendríamos que montar el Hive correspondiente al Perfil Predeterminado de Windows (Ntuser.dat), crear el valor y volver a guardarlo para que cada nuevo usuario lo tomara. Lo anterior es porque las extensiones están disponibles solo para Server. Veré si puedo crear un post aparte para ese método.

Espero sea de utilidad.

Saludos,

Checho

Enhanced Mode en Hyper-V para Windows 8.1 y mi dilema con la ventana de Conexión que no volvía a aparecer

Normalmente, para realizar demostraciones en presentaciones o para escribir un artículo en la web, requiero tener diferentes o variados escenarios; así que recurro al camino más lógico para poder solventar esto, y es claro está, la virtualización. Por lo general, yo recurro a VMware Workstation, ya que me parece un producto bastante robusto, y muy cómodo para interactuar con hardware y recursos gráficos, además de todas sus características; sin embargo, no dejo de lado Hyper-V, pues lo uso casi siempre que preparo un laboratorio por su rapidez y bajo consumo de recursos, pero además también, como en el caso de Windows 8.1, para explorar algunas de las nuevas características que mejoran en la versión.

De vez en cuando me encuentro yo mismo con un problema complejo, y que me cuesta bastante solucionarlo, pero gracias a esto, logro aprender algo nuevo, así que no dejo de ponerlo en lista para subirlo aquí al Blog. En esta ocasión, me enfocaré la primera parte del post en la característica específica llamada Enhanced Mode que aunque poco tiene que ver, directamente ocasionó el problema, para profundizar en el paso a paso que tuve que seguir para encontrar la solución. Esto es una especie de combinación entre exposición de característica, y un problema que aunque les podrá parecer trivial, cobró bastante importancia para mí.

Sobre Enhanced Mode en Windows 8.1

Enhanced Mode o Modo Mejorado – Como probablemente estará en Español-, nos da la posibilidad de realizar una conexión remota, tal cual la conocemos desde hace mucho tiempo a nuestras máquinas virtuales y de esta forma, poder tener mayores recursos dentro de nuestra virtual compartidos con el host, como la posibilidad de hacer Copiado y Pegado entre Host y Virtual, o acceder a unidades físicas como USB, entre otras.

Lo interesante, es que desde Hyper-V en Windows 8.1 ya no es necesario realizar procedimientos adicionales para hacer esta conexión, pues una vez se instale la máquina virtual por primera vez, se le actualicen los Virtual Machine Additions –Controladores- de ser necesarios, y se apague, o reinicie, Hyper-V nos ofrecerá el cuadro de conexión similar al siguiente:

image

De forma predeterminada, nos pedirá indicar la resolución, y al darle clic en el botón Conectar, ingresaremos a la virtual rápidamente a través de RDP con todos sus beneficios. Ahora bien, si se cierra el cuadro de diálogo, Hyper-V iniciará la conexión regular y predeterminada que se tiene a las máquinas virtuales, es decir, tal cual la hemos conocido toda la vida, pero en la barra de herramientas en la parte superior, podremos ver el botón para intercambiar entre Sesión Básica y Modo Mejorado. Si pasamos de Básica a Mejorada, nos volverá a mostrar el cuadro anterior, a menos que ya le hayamos especificado alguna configuración:

E1

En caso de que deseemos más opciones para nuesta conexión remota, desde el cuadro de Conexión, podemos hacer clic en el botón inferior de Mostrar Opciones (Show Options), y de esta forma habilitaremos la pestaña de Recursos Locales (Local Resources) y poder especificar configuraciones de audio remoto, recursos y dispositivos que podremos utilizar en la sesión remota:

image 
Si hacemos clic en Más… (More), debajo de Dispositivos y recursos locales, podremos configurar específcamente qué unidades del host queremos ver en nuestra máquina virtual, agregando incluso los Plug and Play que conecte después:

image

*Nota: Estos dispositivos se verán como unidades de red en la máquina virtual.

Una vez se le de el botón de Conectar, podremos cambiar cuantas veces queramos entre Sesión Básica y Modo Mejorado, sin tener que indicarle las anteriores configuraciones de nuevo, siempre y cuando no se cierre la máquina virtual; de lo contrario, volverá a aparecer el diálogo de conexión.

Como ven, es algo relativamente sencillo, pero que le hacía gran falta a Hyper-V, sobre todo en el aspecto de una interacción más fácil.

¿Y cuál es el dilema entonces?

Hasta aquí, como funcionalidad está todo muy bien… mi problema empezó cuando quise tomar ventaja de una pequeña opción incluida en la ventana de conexión, al darle clic en Mostrar Opciones específicamente, la que dice: “Guardar mis configuraciones para futuras conexiones a esta máquina virtual

H3

Inglés: “Save my settings for future connections to this virtual machine.”

Esto me permitiría, como bien especifica, guardar todo lo que haya habilitado o inhabilitado en Pantalla o Recursos Locales para próximas conexiones remotas utilizando el Modo Mejorado; el inconveniente fue que al habilitar esto y hacer clic en el botón Conectar, no pude volver a encontrar la forma de volver a sacar el cuadro de conexión desde el ambiente gráfico.

¿Por qué la necesidad de entrar? Pues bien, sin este cuadro de diálogo, no tenía forma de cambiar la resolución, agregar nuevos dispositivos, o habilitar/deshabilitar recursos que hubiera compartido con la máquina virtual. Para ser más específicos, ni cambiando entre Sesión Básica a Modo Mejorado, ni cerrando y abriendo nuevamente la máquina virtual, ni mucho menos recurriendo a la ventana de Hyper-V Virtual Machine Connections:

image

Duré casi una hora mientras investigaba los diferentes métodos que conocía para ingresar a la máquina virtual y variar la forma en que cambiaba a Modo Mejorado, pero sin ninguna fortuna. Lo siguiente entonces fue pensar ¿Dónde guarda Windows esta configuración? Es decir, ¿Dónde lee el Sistema Operativo el estado de la opción que guarda o no las configuraciones? Si averiguaba eso, entonces podría revertir manualmente el cambio y volver a tener mi pantalla de vuelta. Para poder encontrar algo, no había otra herramienta mejor que Process Monitor de Sysinternals.

Para mi fortuna, como a cada máquina virtual se le puede activar o no el Modo Mejorado, abrí otra, y antes de volver a habilitar lo de “Guardar las configuraciones para futuras configuraciones en esta máquina virtual”, dejé corriendo Process Monitor, y al hacer clic en Conectar para asegurarme que se guardara, volví a Process Monitor, paré la ejecución con CTRL + E y empecé a investigar los resultados.

Alguna vez tuve la fortuna de que Aaron Margosis de Microsoft, me hiciera caer en cuenta, que una buena forma de seguir ejecuciones de procesos dentro de Process Monitor, es utilizar Process Tree (Árbol de Procesos), pues me daría una vista mucha más organizada, muy similar a la de Process Monitor, y podría ver qué comando ejecutó cada proceso durante el tiempo en que se estuvo monitoreando.
La forma más fácil de ver el Process Tree, es presionando las teclas CTRL + T, o bien yendo al menú Tools y seleccionar Process Tree:

image

En el Process Tree, tuve que ubicar el proceso correspondiente al que maneja Hyper-V para la conexión a las máquinas virtuales, específicamente: VmConnect.exe. No fue muy difícil averiguarlo, pues Process Explorer me lo podría dar fácilmente:

image

*Nota: Hay que tener en cuenta, que la Consola donde se administran las máquinas virtuales, no es más que otra Consola de Administración de Microsoft y por ende, utiliza el proceso genérico de MMC.exe, aunque parar abrir la que corresponde a Hyper-V, utiliza el comando: "C:Windowssystem32mmc.exe" "C:Windowssystem32virtmgmt.msc"

Process Tree me puede mostrar de una manera muy organizada la ejecución que realizó el proceso indicado en el momento de su monitoreo solo con hacer clic en él. Para este caso, encontré un comando muy interesante:

H4

VmConnect estaba llamando a HOME (Que era el nombre de mi equipo) y a Win81-2 (Nombre de la máquina virtual), para después especificarle unos parámetros que eran desconocidos para mí (-G y –C). Esto me decía que a parte de poder trabajarse como línea de comandos, era lo que internamente Windows hacía para conectarse a las diferentes máquinas virtuales. Para comprobarlo, abrí un Símbolo de PowerShell con privilegios elevados y ejecuté: VmConnect.exe –?

Como era de esperarse, obtuve una pequeña ventana de ayuda para el uso de las conexiones a las máquinas virtuales:

image

Aquí podía ver para qué servía cada argumento, por lo que ahora era claro que para la forma como se conectaba Hyper-V internamente, era especificando el Nombre de Equipo, el Nombre de la VM, el GUID (-G) correspondiente a la máquina virtual y finalmente algo llamado Count (-C), que indicaba la cantidad de instancias de la virtual. No entraré en detalles sobre la línea de comandos, pues es algo más para alguien con experiencia en virtualización, y que le guste todos sus “juguetes”.

Lo que me llamó la atención, es que había un parámetro llamado Edit, que según su descripción, abría las configuraciones de conexión, y si no estoy mal, debía referirse al cuadro que estaba buscando. Con esto en mente, desde PowerShell, y siguiendo los parámetros de VmConnect, ejecuté: VmConnect.exe “HOME” “Win81” /Edit y esto obtuve:

image

Como lo pensé, ahí estaba la ventana de configuraciones para las Conexiones Virtuales… Sin embargo, a pesar de que podía quitar la selección y todo volvería a la normalidad, esto no me respondía la primera pregunta, ya que hasta este punto, aún no sabía dónde es que se escribía este cambio dentro de Windows. Para tener total satisfacción, volí a Process Monitor y cerré el Process Tree, pues aunque me mostraría el comando, no me diría dónde estaba escribiendo ese proceso.

Lo siguiente, y teniendo en cuenta el proceso de VmConnect.exe, abrí la ventana de Filter de Process Monitor (CTRL + L), y establecí dos filstros:

Process Name Is VmConnect.exe
Category Is Write

image

Los filtros anteriores me asegurarían que la Traza de Process Monitor sólo me mostraría todo lo relacionado al proceso de VmConnect.exe, pero además, las operaciones que incluyeran específicamente algo de escritura, pues para guardar, Windows tenía que escribir algo. Al hacer clic en el botón Apply y OK, el filtro se me hizo notablemente más pequeño; lo que quedaba era aplicar un poco de lógica a las operaciones que estaba haciendo.

Después de un repaso sobre cada operación, noté que se estaba creando y modificando un archivo con un nombre algo extraño, pero que incluía vmconnect.rdp, y terminaba en .config:

image

Después de un análisis más detallado sobre las propiedades de la operación (Clic derecho, Properties), me di cuenta que la secuencia de caracteres alfanuméricos correspondían al GUID de la máquina virtual:

image

Pocas dudas me quedaban ahora para saber que tenía que ver con la configuración de la Virtual, máxime cuando tenía una operación de escritura. Desde Process Montior, hice clic derecho y seleccioné Jump To para ir rápidamente al directorio donde estaba este archivo:

image

Una vez allí, noté que habían varios archivos de estos, a parte de que estaba en un directorio que administraba Hyper-V:

image

Hice al fin clic derecho sobre el archivo que me había seleccionado Process Monitor, le di en Abrir, hizo el proceso con Visual Studio 2013, que había asociado los .Config al instalarse y después de un pequeño repaso por el XML, encontré por fin la configuración que buscaba:

image

Como lo muestra la captura, SaveButtonChecked estaba con el valor de True, para indicarle a Hyper-V que debía guardar las configuraciones que hiciera sobre la ventana de Conexión.

Finalmente, cambié el contenido del valor de True a False para indicar desactivado, Guardé y después de abrir nuevamente mi máquina virtual, sin necesidad de comandos extras, es decir, con solo hacer doble clic desde la Consola de Administración, obtuve nuevamente mi tan buscada Ventana de Conexión:

image

Ignoro por qué Hyper-V no tiene alguna opción hasta ahora en Windows 8.1 para traer de vuelta esta ventana, en caso de que uno desee hacer otros cambios, independiente de si se le indica que guarde la configuración. Sin embargo, exponiendo el caso a Mark Russinovich, podré hacer llegar a través de él esta retroalimentación al Equipo de Hyper-V.

Saludos,

Checho

Exportar e implementar un diseño predeterminado de la Pantalla de Inicio en Windows 8.1, utilizando PowerShell y Políticas de Grupo

Hace ya algunos días, Microsoft lanzó su primera Vista Preliminar de Windows 8.1 al público, para que los que deseen, lo instalen a través de la Tienda, o bien descargando el .ISO.
Como era de esperarse, este Preview vino cargado de nuevas características, y por supuesto, problemas y polémicas en los Foros oficiales de Microsoft Community / TechNet.

Aunque en este Blog, y en otros espacios donde tengo y tendré la fortuna de escribir, intentaré escribir sobre la mayor cantidad de características incluidas en la actualización, empezaré con una no tan básica, pero que definitivamente me parece algo bastante útil, sobre todo en entornos de implementación en la empresa.

El proceso consiste en personalizar la nueva Pantalla de Inicio desde una máquina con Windows 8.1, a continuación, exportar esta configuración en un XML utilizando PowerShell, y por último, aplicar una de las nuevas políticas de grupo integradas con Server 2012 R2 para que todo el resto de máquinas tengan este mismo diseño, pero además, que no puedan modificarlo; así se asegurará un solo estándar sobre la Pantalla de Inicio en todos los usuarios.

Requerimientos

– Un equipo con Windows Server 2012 R2, con Controlador de Dominio. Si aún no lo tienen, pueden hacer la descarga desde aquí: Try Microsoft’s Cloud OS Vision

– Dos equipos con Windows 8.1 que estén unidos al dominio. Si aún no tienen Windows 8.1, pueden descargar la imagen ISO desde aquí:
http://windows.microsoft.com/es-es/windows-8/preview-download

Personalizando la Pantalla de Inicio

El primer paso, es simplemente personalizar todos los Tiles de la Pantalla de Inicio buscando un estándar para todos los usuarios; esto implica reorganizar iconos, anclar aplicaciones, y nombrar los grupos.

Así es como luce la Pantalla de Inicio, en una instalación recién hecha de Windows 8.1:

image

Para este post, y siguiendo este primer paso, lo que hice fue organizar los iconos en tamaño y posición, según como me gustaría verlos en todas las máquinas, y además le puse nombres a estos grupos, para identificar los tipos de aplicaciones que tendría:

image

*Nota: Hay que tener en cuenta que ni el Fondo de Pantalla, ni el Diseño interno de la Pantalla de Inicio se copiarán con este procedimiento. Para eso habría que utilizar algún metodo diferente que copie toda la configuración del Perfil.

Exportando diseño con PowerShell

Cuando hayamos personalizado la Pantalla de Inicio a nuestro gusto estándar, debemos crear el XML que utilizará la Política de Grupo para replicar esta configuración en todos los demás equipos que se conecten y se habiliten en el dominio. Para exportar, PowerShell en Windows 8.1 y Server 2012 R2, ahora incluye un nuevo Cmdlet llamado Export-StartLayout, que a través de unos sencillos parámetros, generará el .XML o .BIN (Si es que se fuese a implementar en una imagen de Windows).

*Nota: Lo del .BIN y el proceso para hacer esto sobre una imagen offline (.WIM), lo tocaré en un futuro artículo.

Desde el primer equipo donde se hicieron los cambios en la Pantalla de Inicio, hacemos clic derecho en el botón de Inicio, y seleccionamos Windows PowerShell (Administrador) para ejecutar el símbolo de PowerShell con privilegios elevados:

image

En la ventana de PowerShell, ejecutamos el siguiente comando:

Export-StartLayout –Path “<RutaXML>Nombre.xml” –As XML

Donde <RutaXML> es el directorio que almacenará el archivo XML, y Nombre.xml es como lo llamarán. Para este post, que lo almacenaré en mi Escritorio, y lo llamaré StartScreen, sería:

Export-StartLayout –Path “C:UsersscalderonDesktopStartScreen.xml” –As XML

image

*Nota: Clic en la imagen para verla en tamaño normal.

Se nos creará un XML que contiene metadatos y configuración relevante para que Windows reconozca la configuración de la Pantalla de Inicio:

image

Cada aplicación la reconoce por el AppID que se genera con su instalación; esto podríamos consultarlo con otro Cmdlet de PowerShell llamado Get-StartApps o bien, buscando el respectivo AppID desde el Registro de Windows, leyendo el valor de AppUserModelld:

image

*Nota: No entraré en detalle sobre lo del AppID, pues es un tema totalmente nuevo del que no tengo conocimiento y que apenas estoy investigando.

Para terminar este paso, debemos copiar el archivo XML que creamos a un directorio compartido dentro del Equipo donde está el Controlador de Dominio. Para este post, el directorio compartido es: \DCStartLayout

Creando y aplicando la Política de Grupo

Desde el Equipo Server 2012 R2, donde está el Controlador de Dominio, y nuestro archivo XML, debemos crear la política para que cada equipo tenga exactamente la misma configuración de Tiles en su Pantalla de Inicio, impidiendo además su personalización manual.

Para generar la Política, seguimos estos pasos:

1. Desde el Server Manager, clic en Herramientas en la parte superior derecha y seleccionamos Administrador de Políticas de Grupo.

2. En la Consola de Administración, expandimos nuestro Forest o Bosque, después el nodo de Dominios, nuestro Dominio y finalmente hacemos clic derecho en Política de Dominio Predeterminada y seleccionamos: Editar:

image

3. En el Editor de Políticas de Grupo, expandimos:
Configuración de UsuarioPolíticasPlantillas AdministrativasMenú de Inicio y Barra de Tareas

En el panel derecho, buscamos la plantilla de Diseño de Pantalla de Inicio (Start Screen Layout) y hacemos doble clic para abrirlo:

L3

4. Seleccionamos Habilitado en la plantilla, y debajo de Archivo de Diseño de Inicio, le indicamos la ruta compartida donde se encuentra nuestro XML. Para este caso, por ejemplo, la mía sería: \DCStartLayoutStartScreen.xml

image

Clic en el botón Aplicar y luego Aceptar para que la Política quede implementada.

Probando la Política

Para poder verificar que el Diseño haya quedado implementado, debemos reiniciar, o bien actualizar nuestras políticas de grupo con Gpupdate /force y reiniciar.

Para ilustrar un poco, en un segundo equipo, antes de aplicarse la política, este es el diseño predeterminado de los Tiles, con una personalización adicional a los colores de fondo:

image

Al actualizar las políticas de grupo con Gpupdate /force y reiniciar, este es el aspecto:

image

Como ven, aunque se mantuvo los colores y diseños de fondo, los Tiles y grupos se acomodaron justo como lo especifiqué antes de exportar el XML desde el otro equipo.

Al intentar arrastrar alguna de las aplicaciones, lo normal es que el Tile intente reaccionar, pero no dejará hacer nada:

image

Tampoco expande ninguna opción emergente al hacer clic derecho sobre los Tiles, ni renombrar grupos. La Pantalla de Inicio mantendrá el mismo estándar, hasta que por políticas se diga lo contrario.

[Appendix]: Explorando el Registro con esta política

Para los que quizá están interesados en ver cómo se puede reproducir esto manualmente, importando ficheros de registro, Windows crea dos valores: LockedStartLayout y StartLayoutFile ubicados en la clave:

HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsExplorer

image

LockedStartLayout, es un valor de tipo REG_DWORD, que por lo general recibe contenido binario. Se encarga de prohibir al usuario cualquier tipo de personalización sobre el diseño importado en la Pantalla de Inicio, es decir, que no se pueda hacer clic derecho, mover las aplicaciones de lugar, entre otras. El contenido que recibe es de “1” para indicar habilitado, o “0” para deshabilitar esto.
En caso de que el contenido esté en cero “0”, el usuario mantendrá el mismo diseño, pero podrá realizar modificaciones a su gusto.

StartLayoutFile, es un valor de tipo REG_SZ, es decir, un valor de Cadena. Su contenido será el directorio –local o de red- donde se encuentra el archivo XML; por supuesto, hay que referenciar el nombre exacto del archivo, tal cual se escribe en la plantilla del Editor de Políticas de Grupo.

Si quisiéramos aplicar esta política utilizando estos valores de Registro, es necesario navegar hasta HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindows, hacer clic derecho, crear una nueva Clave, llamarla Explorer y dentro de ésta, crear los dos valores explicados anteriormente con su respectivo contenido. Después de esto, basta con reiniciar el equipo y habrá quedado implementada.

La ventaja de hacerlo manualmente, es que podría ser mucho más flexible, no requeriríamos de un Controlador de Dominio, y la podríamos enviar a través de algún Script o bien, programáticamente.

*Nota: Cabe aclarar, que como es natural, utilizando el Editor de Políticas Locales (gpedit.msc) también se puede crear esta política.

Espero les sea de utilidad.

Checho