El pequeño Bug de Windows 8 que lo hacía creer un Área de Trabajo de Windows To Go, Procmon, DiskPart y su solución.

Como se darán cuenta por el título, no todos los artículos se pueden referenciar a algo meramente bueno, sin embargo, en el problema que posteriormente expondré, es donde personalmente tuve la oportunidad de aprender más, y de una forma más entretenida acerca de la maravillosa funcionalidad de Windows To Go, incluida en Windows 8.

*Nota: El siguiente post contiene las tres partes ya conocidas por ustedes, es decir, El Problema, La causa y su solución. A pesar de esto, como se trata de un Bug en Windows 8, apenas esté disponible el parche que oficialmente corrige el problema, actualizaré este artículo.

El Problema

Recordemos que en concepto general, Windows To Go es una nueva tecnología o característica integrada en Windows 8, soportada desde su edición Enterprise y que básicamente, permite realizar una instalación completa de Windows 8 en un dispositivo compatible USB o disco externo, lo que brinda la posibilidad de llevar el escritorio personalizado a cualquier equipo portátil, tablet o de escritorio que soporte Windows 7. Por su flexibilidad y buen rendimiento, Windows To Go se convierte en una de las funcionalidades más productivas y eficientes.

El problema sin embargo, aparece cuando Windows 8 no es capaz de distinguir correctamente que no se encuentra instalado en un dispositivo USB, sino en el disco duro local, y por tanto, se comporta como un Área de Trabajo de Windows To Go.
En otras palabras, después de instalar Windows 8 en cualquier disco local, y conectar un dispositivo USB cualquiera que cause el problema (En “La causa” explicaré más esto), el sistema operativo empieza a “creer” que es un Windows To Go, por tanto, empieza a comportarse como uno, por lo que lo que consideraríamos como los errores, serían básicamente los efectos normales de estar trabajando con un Windows To Go.

Por ejemplo, el más común, y con el que normalmente se está detectando este problema, es cuando se intenta ingresar a la Tienda de Windows 8; muy seguramente verán un mensaje similar a la siguiente captura:

image

Inglés:Windows Store isn’t available on Windows To Go workspaces.”
Español:La Tienda Windows no está disponible en áreas de trabajo Windows To Go

Otros pueden detectar el problema al intentar hacer Refresh o Reset:

WTG4

Pero a pesar de todo, esto no es lo más complicado del problema, y en ocasiones, no es lo que primero se detecta. Cuando se conecta el o los dispositivos causantes, pasa que al tratar de remover el dispositivo USB, Windows se “congela” como normalmente lo haría en un ambiente de Windows To Go, y muestra un mensaje como el siguiente al volver a insertar el dispositivo o disco externo:

WTG3

Inglés:Only remove if after your PC has shut down completely. Otherwise, your Windows To Go workspace might crash and you could lose data.”
Español:Quítela únicamente después de apagar completamente su PC. De lo contrario, el área de trabajo Windows To Go podría bloquearse y podrían perderse los datos.”

Con este último comportamiento es donde en verdad se complican las cosas, puesto que a menos que se prenda el equipo sin el dispositivo, siempre se tendrá que dejar conectado como si fuera un Windows To Go, de lo contrario, Windows actuará como lo haría en un Área de Trabajo de WTG y se bloqueará, para posteriormente apagarse.

La causa

Para la primera parte del problema, es decir, los dos primeros mensajes, sabía en el momento que existe una política propia que se activa en un Área de Trabajo de Windows To Go, con el fin de bloquear la Tienda y características como Refresh y Reset. La pregunta era saber por qué se estaba creando en ese momento, sabiendo que la instalación estaba en un disco físico interno.

En ese momento que pude interactuar por primera vez con el problema, acudí a Process Monitor de Sysinternals. Específicamente, la opción de Enable Boot Logging; que me permite rastrear toda la actividad que hay en Windows desde que se cargan los controladores y servicios, hasta cuando el escritorio está completamente funcional. Por supuesto, debía hacerlo cuando se conectara por primera vez un dispositivo causante del problema al encender el equipo.

El resultado fue notablemente bueno, puesto que encontré la creación de un valor llamado PortableOperatingSystem generado por System, y que tenía un valor de “1”, que referencia siempre como “Activo”:

WTG

Como ven en la captura, está justo después de que Windows enumera los dispositivos que tiene reconocidos.

Modificando este valor a cero (0), o bien borrándolo completamente, tanto la Tienda, como Refresh y Reset quedan completamente funcionales de nuevo; algo similar a como si dentro de un Windows To Go, habilitáramos la política para que se dejen usar. Sin embargo, esto no corrige el problema físico con los dispositivos USB, por lo que Windows siempre se seguirá bloqueando tal cual fuese un Área de Trabajo de WTG al remover la USB.

¿Por qué sucede esto? Pues bien, aquí estuvo lo más interesante a manera personal cuando estaba explorando el problema, puesto que pude obtener ayuda directa el del Equipo de Windows To Go para lo que trataré de explicarles a continuación…

Para cada problema, probablemente exista alguna herramienta útil, y en este caso, para comprender la causa y las consecuencias, había que recurrir a DiskPart. Herramienta para manipulación de Discos, incluida desde Windows XP, pero con funciones nuevas y evolucionadas en las nuevas versiones.

Con DiskPart, basta con ejecutar algunas líneas de comandos para llegar a detalles muy concretos tanto de los discos, como de las particiones en el sistema operativo. Para este caso, hay que identificar cuántos discos se encuentran conectados, incluyendo cualquier USB, así sea un celular. Para esto, basta con utilizar List disk, que mostrará todos los discos, con un número asociado, posteriormente, Select disk # (Donde # Es el número asociado al disco) para trabajar sobre uno solo, y finalmente, “Unique disk”, para obtener el Identificador único que contiene cada disco.

*Nota: Como con cada usuario, Windows necesita saber cuál disco está enumerando y funcionando, por eso le asigna un Identificador único (Disk ID).

Dicho y hecho esto, es donde para este caso, y los que probablemente tengan las personas que vean este comportamiento, se podrá ver la causa real del problema:

WTG5

Los que experimenten este problema, podrán ver, como en la captura anterior, que tendrán dos o más identificadores de disco con los mismos dígitos, esto quiere decir, que para Windows, son exactamente el mismo disco.
Un identificador siempre lo tendrá el Disco que contiene el sistema operativo, es decir, Disco 0, y el otro, podrá ser cualquier dispositivo USB que se encuentre conectado.

Cuando un disco o dispositivo es inicializado por primera vez, Windows asigna un ID utilizando un algoritmo aleatorio, por lo que es poco probable que se repita, pero para este problema, que suele hacerlo, se genera una colisión de identificadores, haciendo que Windows mismo se confunda entre si es o no un Área de Trabajo de Windows To Go. Para entender un poco más, resumiré y explicaré algunos aspectos internos de cómo es que Windows To Go sabe cuándo aparecer:

Como Windows To Go, no es más que una variación del funcionamiento normal de Windows 8 por estar en un dispositivo extraible, se divide en dos comportamientos diferentes para inicializarse una vez se aplica una imagen de Windows en una USB. Lo primero, es que para ser portable, el sistema operativo tiene que saber que está instalado en un disco extraible, y no en uno local, para esto, y la forma de identificar esto, es sabiendo que el identificador único de disco que se encuentra en el USB Store del sistema operativo, es el mismo que el que se encuentra instalado. Si el identificador fuese diferente, Windows normalmente tomaría eso como un dispositivo de almacenamiento. El otro factor, está en el hecho de que una vez sepa que está instalado en un dispositivo USB, debe crear el valor de Registro de PortableOperatingSystem, para que Windows bloquee Refresh, Reset, y la Tienda, además de pararse cuando no detecte el dispositivo conectado y funcionando.

Al haber colisión, Windows entiende que el disco local y el extraible son los mismos, por lo que debe trabajar como si estuviese en un área de trabajo de Windows To Go. Es por esto, que al quitar el dispositivo causante, que tiene el mismo ID del disco local, se congela completamente el sistema, porque así debería funcionar si estuviese en lo cierto. El identificador normalmente tendrá para este problema el número de 00000001, aunque puede variar como en la captura.

La solución

Como el problema consta de dos partes, la solución misma también debe ser así. Lo primero que tienen que hacer, es identificar mediante DiskPart, cuál es el dispositivo que tiene el mismo ID del disco local, posteriormente, se le debe cambiar manualmente el identificador, para que deje de existir la colisión.

Para mi caso, que el identificador repetido lo tenía el Disco 1, el procedimiento sería así:

Desde un Símbolo del sistema con privilegios elevados (Clic derecho, Ejecutar como administrador), ejecutar:

Diskpart

List disk

Select disk # (Donde # representa el número del disco extraible)

Unique disk id=00000000

Por ejemplo, para mi caso sería:

Select disk 1

Unique disk id=00000001

image

*Nota: El identificador puede ser 8 dígitos inventados, lo importante es que sea diferente del disco local. Inclusive, pueden utilizar el comando de Clean, para que el ID se convierta en 00000000, y después darle formato al dispositivo desde el Administrador de discos para que le asigne un nuevo ID.

Una vez el disco se le haya cambiado el ID, se podrá remover del equipo sin que se congele el sistema operativo.

*Nota: Es probable que nunca encuentren colisión de discos, por lo que pueden pasar directamente al paso que describo después.

El siguiente paso, consiste en eliminar el valor PortableOperatingSystem, de tal forma que se pueda acceder a la Tienda y utilizar características como Refresh y Reset. Para esto, pueden descargar el fichero NoWTG desde aquí:

Descomprimir, ejecutarlo, y después de que importe, el archivo de registro se encargará de eliminar el valor.

*Nota: Lo que hace el fichero, es navegar hasta la clave: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl y quitar el valor de PortableOperatingSystem. Lo pueden hacer manualmente, en caso de que no les funcione el archivo anterior.

Después de reiniciar el sistema, Windows debe funcionar nuevamente sin ningún tipo de contratiempos sobre Windows To Go.

*Importante: El Equipo de Windows me notificó que están trabajando en el parche que corregirá esta colisión, así que tan pronto pueda estar enterado de él, actualizaré el post con el enlace de descarga, o información apropiada.

Espero sea de utilidad, si alguien continúa con el problema, o quiere añadir algo, ¡Comentarios bienvenidos!

Checho

3 comentarios en “El pequeño Bug de Windows 8 que lo hacía creer un Área de Trabajo de Windows To Go, Procmon, DiskPart y su solución.”

  1. Buen aporte este tambien, pero te consulto: porqué no me funciona WTG en mi PC?. Será porque se creo en ésta que no lo toma?. De todos modos, lo hice funcionar en otra PC con Windows Xp pero en la mía con W7 se inicia pero antes de mostrar el mensaje de bienvenida, se resetea. Espero que te sirva la explicación, pero te agrego, tengo una PC Pentium Dual-Core E5700 de 3 GHz/
    2 gigas de RAM/Sistema Operativo de 32 bit/W7 Ultimate
    con service pack 1

  2. Perdon por la demora en responder, pero espero que a’un puedas responderme. Por supuesto que la primera pregunta la hice con tu guia sobre WTG y lo tengo en un pendrive de 16 gigas Kingston. Segui todos los pasos, lo borre y volvi a montarlo varias veces. Es mas, ahora tengo funcionando un W8 Enterprise en VHD y me funciona de maravillas, pero cuando intento generarlo desde el VHD me dice que no puede hacerlo porque no es un dispositivo autorizado o algo asi. Tampoco puedo hacerlo con el PowerShell ya que no me toma la primer particion de 350mb sino que me toma todo el pendrive como primera particion. Lo cierto es que no puedo probarlo en la PC que lo creo y no se si estara bien instalado como para probarlo en otro PC. No se si te sirve pero el ID del disco es 00000000 y Location Path es Unavailable. Espero poder leerte pronto para ver como continuo. Muchas gracias.

Responder a checho Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *