Restaurar los fondos para Pantalla de Bloqueo predeterminados en Windows 8.1

Dentro de las características incluidas en la personalización de todo el ambiente de Interfaz Moderna en Windows 8, se introdujo la Pantalla de Inicio, funcionalidad que nos permite establecer un fondo de pantalla personalizado – incluso a través de Directivas de Grupo- que aparece justo antes de iniciar sesión en el equipo.

Con la actualización a Windows 8.1, la Pantalla de Bloqueo actualizó las imágenes predeterminadas y además agregó una nueva característica para hacer una presentación, lo que permite seleccionar varias imágenes para que roten solas mientras el equipo se encuentra bloqueado.

Así luce la Pantalla de Bloqueo en Configuración de PC:

image

*Nota: Pueden ver algunas guías creadas por Microsoft sobre los cambios en la personalización de Windows 8.1, incluyendo la pantalla de bloqueo aquí:
http://windows.microsoft.com/es-es/windows-8/personalize-pc-tutorial 

A pesar de que la interacción con la pantalla de bloqueo no tiene mayor ciencia, este artículo nace a partir de una necesidad muy específica, y es poder restaurar, como se hacía en Windows 8, todas las imágenes predeterminadas que incluye Windows cuando deseemos pues lamentablemente en Windows 8.1 no es posible hacer esto de forma sencilla. Si queremos entonces volver a poner alguna de las 6 imágenes que vienen con Windows, hay que aplicarlas una por una buscándolas en el directorio C:WindowsWebScreen que es donde residen.

En la siguiente parte mostraré con un procedimiento paso a paso, no soportado pero simple, cómo podemos volver a establecer todas las imágenes predeterminadas para la Pantalla de Bloqueo en Windows 8.1.

Requerimientos:

– Descargar PsExec de Sysinternals desde aquí:
http://technet.microsoft.com/es-es/sysinternals/bb897553

– Descomprimimos PsExec y luego copiamos el ejecutable al directorio C:Windows para que sea fácil de ejecutar desde cualquier ubicación.

Restaurando fondos predeterminados

Después de algún tiempo de usado Windows 8.1, es posible que varios o todos los fondos de la pantalla de bloqueo se hayan cambiado por otros que hayamos establecidos, por ejempo:

image

*Nota: Imágenes tomadas de: www.deviantart.com

Necesitamos indicarle a Windows que no tome estas imágenes, sino que vuelva a referenciar solo las que se encuentran en la carpeta Screen.

El sistema operativo almacena una copia de estas imágenes en el directorio:

%SystemDrive%ProgramDataMicrosoftWindowsSystemData

Específicamente, en una carpeta creada con el SID de usuario. Sin embargo, no es bueno ni recomendable manipular los permisos de esta carpeta y su contenido, entre otras porque hay un orden dinámico para guardar cada imagen nueva.

Por otro lado, desde el Registro de Windows, se referencia el orden y la letra asignada para cada imagen; la sub-clave en específico es:

HKLMSOFTWAREMicrosoftWindowsCurrentVersionSystemProtectedUserData
SIDAnyoneReadLockScreen

Donde SID se refiere al identificador único de usuario que el sistema genera al crearse por primera vez la cuenta, por ejemplo, para mi usuario sería:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion
SystemProtectedUserDataS-1-5-21-2527597101-560732054-2570409974-1106AnyoneReadLockScreen

En el valor Predeterminado se almacena el orden de las imágenes a aparecer en la pantalla de bloqueo:

image

Como los permisos sobre esta sub-clave y valores corresponden al usuario SYSTEM y Administrador integrado, es necesario tener más permisos para poder modificarla.

Modificando el valor

Hacemos clic derecho en el botón de Inicio y seleccionamos Símbolo del Sistema (administrador).

En la consola digitamos y ejecutamos: PsExec –SID Regedit.exe

image

Al ejecutarse el Editor de Registro, navegamos hasta:

HKLMSOFTWAREMicrosoftWindowsCurrentVersionSystemProtectedUserData
SIDAnyoneReadLockScreen

Donde SID se refiere al identificador único de usuario que el sistema genera al crearse por primera vez la cuenta, por ejemplo, para mi usuario sería:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion
SystemProtectedUserDataS-1-5-21-2527597101-560732054-2570409974-1106AnyoneReadLockScreen

Hacemos clic derecho sobre el valor Predeterminado y Eliminar.

image

Podemos eliminar también todos los valores binarios que se fueron creando para evitar futuros problemas hasta que todo quede vacio y solo se vea el valor Predeterminado sin contenido:

image

Eso es todo, basta reiniciar el equipo para que Windows tome los cambios y una vez dentro, debemos tener nuevamente todos los fondos predeterminados:

image

¡Eso es todo! Estoy tratando de preparar un artículo donde abordaré en más profundidad cómo funcionan los Fondos de la Pantalla de Bloqueo internamente cuando se establecen, así que espero publicarlo pronto y extender lo que aquí expliqué.

Espero sea de utilidad.

PD. No olviden seguirme en Twitter: http://www.twitter.com/secalderonr

Saludos,

Checho

El error de espacio en disco o memoria insuficiente al abrir un archivo de Office en Win8, los ADS, Process Monitor y su solución

Hace unos días, visitando un cliente aquí en Colombia, me encontré con un problema muy interesante y que al parecer es más común de lo que imaginaba; como afortunadamente lo pude documentar y reproducir, quiero compartirlo aquí para los que en un futuro entren buscando alguna respuesta al inconveniente.

*Nota: En la parte de “La causa”, tocaré algunas cosas referentes a Windows Internals, así que si me equivoco en algo, agradezco lo comenten para corregirlo. =)

El problema

El cliente recién se encuentra en renovación de equipos, así que es normal que le venga con Windows 8, adicional a esto, están haciendo migración de toda la suite Office 2007 a la 2013, por lo que algunos de estos equipos se les estaba actualizando la versión.

El problema empezó a suceder cuando en varios de estos equipos, después de hacer la actualización a Office 2013 y luego de intentar abrir un archivo de Excel, aparecía un mensaje similar a este:

Captura

Español:
Microsoft Excel no puede abrir o guardar más documentos porque el espacio en disco o la memoria son insuficientes:

– Para disponer de más memoria, cierre los libros o programas que no necesite.
– Para liberar espacio en disco, elimine los archivos que no necesita del disco en el que desea guardar los documentos.

Inglés:
Microsoft Excel cannot open or save any more documents because there is not enough available memory or disk space:

– To make more memory available, close workbooks or programs you no longer need.
– To free disk space, delete files you no longer need from the disk you are saving to.

Al hacer clic en Aceptar (OK), Excel quedaba abierto pero el documento no se podía ver de ninguna forma. Lo más extraño, es que este mismo documento funcionaba en otros equipos con Office 2007 o incluso con Office 2013.

Por supuesto, la primera reacción del cliente fue revisar temas de espacio y memoria, pero a parte de que no había nada fuera de lo normal, la operación de abrir una simple hoja de cálculo no puede consumir tantos recuros como para que Windows impida su acceso. Como no encontraba solución, procedía a realizar downgrade de Office con el objetivo de evitar el mensaje de error.

*Nota: El mensaje de error en Word u otras aplicaciones de Office no es igual, pero es muy similar al hacer referencia a la falta de recursos.

La causa

Como no tenía la más remota idea del porqué salía este mensaje de error, aún con suficientes recursos e incluso moviéndolo en distintas carpetas, procedí a llamar a la herramienta por excelencia: Process Monitor de Sysinternals.

La idea como siempre, era ejecutar Process Monitor, abrir el archivo, esperar hasta que el mensaje de error saliera, cerrarlo y parar el monitoreo para empezar a buscar entre los miles de resultados, cuál podría darme alguna pista del problema.

Después de un buen rato de análisis (normal cuando no sabes qué buscas), Process Monitor me dio la pista más grande para encontrar la causa del extraño mensaje; siguiendo específicamente al proceso de EXCEL.exe, me encontré con esto:

ZI1

*Nota: Pueden hacer clic en la imagen para verla en su tamaño real.

Como ven en la captura encerrada por rojo, Excel estaba realizando una operación referenciada por Process Monitor como CreateFile, que programación se utiliza normalmente para crear o abrir diferentes tipos de archivos; al final del archivo .xls aparecía algo sumamente interesante y asociado al nombre: Zone.Identifier y la operación era SUCCESS.

Hasta ese momento que noté estas operaciones por primera vez, no tenía la más remota idea acerca de qué se trataba, pero tal vez la intución me llevó a desconfiar de tantas operaciones relacionadas, sobre todo por los tipos, es decir, CreateFile, QueryBasicInfo, Close, LockFile, etc. Además de esto, y lo que en definitiva sería la causa, era la extraña terminación en el nombre de Zone.Identifier así que decidí parar e investigar un poco más.

Zone.Identifier, hace parte de un grupo de atributos NTFS conocidos como Alternative Data Stream (ADS), y que básicamente alojan un flujo de información o datos alternos sobre el archivo.

Los archivos NTFS tienen varios atributos, pero uno de ellos es donde nosotros almacenamos la información cuando escribimos en él, y se conoce como $DATA.

Utilizando Streams de Sysinternals, o mejor aun, Windows PowerShell, puedo ver esto con ayuda del cmdlet Get-Item; por ejemplo, si tengo un archivo en el escritorio llamado ADS.txt, y deseo consultar sus atributos, el comando sería:

Get-Item –Path C:UsersChechoDesktopADS.txt –Streams *

image

Así mismo, podríamos ver su contenido utilizando Get-Content de una forma similar:

Get-Content –Path C:UsersChechoDesktopADS.txt –Stream $DATA

image

*Nota: Para archivos de Office la visualización no es tan simple como en un TXT, así que verán muchos caracteres extraños de una forma desorganizada.

Ahora, los ADS pueden contenter información adicional, como ya lo mencioné al principio; el ADS de Zone.Identifier lo crea Internet Explorer a cada archivo descargado para referenciar en su stream la zona desde la que se descargó. La siguiente tabla muestra todas las zonas existentes:

Valor Configuración
0 Mi Equipo
1 Zona de Intranet local
2 Zona de sitios de confianza
3 Zona de internet
4 Zona de sitios restringidos

Fuente: Ask The Core Team blog.

Desde PowerShell, podemos consultar el identificador con el cmdlet Get-Content también:

image

Estas Zonas las hemos visto alguna vez en nuestras vidas en las Opciones de Internet, pestaña de Seguridad:

image

El nombre completo del archivo entonces finaliza con los respectivos ADS, por ejemplo: Demo.xls:Zone.Identifier.

Como estos ADS no se pueden ver con solo abrir el archivo, es normal que no se muestren y por ende, que generen este tipo de confusión.

Volviendo al problema…

Excel 2013, en su comportamiento natural, es capaz de mostrar el contenido pero abriéndolo en Vista Protegida (Nuevo para Office 2013), con el fin de indicar al usuario que se descargó desde internet:

image

En el caso del cliente, debido a la actualización desde Office 2010 hacia Office 2013, Excel no es capaz de gestionar correctamente lo que parece una excepción y lanza un este error genérico útil solo para entrar en una confusión grande. ¿Se le podría llamar Bug? No lo sé.

La solución

La forma más sencilla y rápida de solucionar este problema, una vez se presente por causa de la actualización, es realizar lo siguiente:

1. Cerrar completamente el archivo.

2. Hacer clic derecho sobre él y seleccionar Propiedades.

En la ventana de Propiedades verán en la parte inferior un botón adicional que dice: Desbloquear:

image

3. Hacer clic en el botón Desbloquear, Aplicar y Aceptar.

Una vez hecho esto, el archivo se podrá abrir sin ningún tipo de problemas nuevamente y los ADS quedarán borrados.

Opcional: Directivas de grupo para Zone.Identifier

Existe una Directiva de Grupo para evistar que Windows conserver el ADS de Zone.Identifier establecido por Internet Explorer al realizar la descarga, para habilitarlo desde el Controlador de Dominio, deben abrir el Administrador de Directivas de Grupo y navegar hasta:

Configuración de UsuarioPolíticasPlantillas AdministrativasComponentes de WindowsAdministrador de datos adjuntos

Doble clic en la plantilla:
No conservar la información de zona en los datos adjuntos de archivo

image

De esta forma, el ADS de Zone.Identifier no se mantendrá nunca y evitarán este problema, además de obtener un poco más de seguridad, sobre todo en equipos en los que se actualizó desde Office 2010 o versiones anteriores a 2013.

Espero sea de utilidad.

Saludos,

Checho

Mover los Perfiles de Usuario a otro disco o partición en Windows 8.1 utilizando Sysprep y un Archivo de Respuesta

Una de las necesidades que más surgen tanto a nivel corporativo como para usuario final, es mantener a salvo tanto los Perfiles de Usuario, como sus respectivos archivos y configuraciones; para asegurar esto, es normal que se proceda a realizar algún tipo de redirección de perfil, sea a través de Políticas de Grupo – que sería siempre lo ideal- o bien con procedimientos manuales que implican manipular físicamente la carpeta de Usuarios ubicada en la unidad del sistema operativo.

Aunque hace un par de años escribí 4 artículos referentes a Windows 7 sobre cómo mover los perfiles a otra partición, dejé de lado un procedimiento adicional que cobra mucho sentido y es relativamente fácil, así que aprovecharé para documentarlo y que además se trabaje sobre Windows 8.1.

En este artículo, explicaré brevemente cómo podemos tomar ventaja sobre el procedimiento y el poder que ofrece la Herramienta de Preparación del Sistema (Sysprep) y el Archivo de Respuesta (AutoUnattend.xml), para mover todos los perfiles que tengamos desde la unidad de Windows a otro disco o partición de una forma limpia y soportada.

Requerimientos:

– Una partición o disco destinada a guardar todos los perfiles.

– Tener instalado el ADK para Windows 8.1. Pueden descargarlo desde aquí:
http://www.microsoft.com/es-co/download/details.aspx?id=39982

– Crear una carpeta llamada 81 en el directorio C: donde se guarden todos los archivos de instalación de Windows 8.1.

Creando el archivo de respuesta

En un equipo de referencia, o en el mismo equipo donde se hará el procedimiento, vamos a la Pantalla de Inicio, buscamos System Image Manager, clic derecho y Ejecutar como administrador:

image

Hacemos clic derecho en Select a Windows image or catalog file y después en Select Windows Image…

image

Buscamos la imagen de Windows en la carpeta C:81sourcesinstall.wim y clic en el botón de Ok.

*Nota: El System Image Manager (SIM) nos pedirá crear un archivo de catálogo para la imagen, debemos aceptar y esperar unos minutos a que lo haga. Esto es para saber qué componentes se pueden agregar y personalizar y sólo se deberá hacer la primera vez.

En la parte superior central de SIM, hacemos clic derecho en Create or open an answer file y en New Answer File…

image

Expandimos el nodo de Components debajo de la imagen agregada, buscamos el de Microsoft-Windows-Shell-Setup_6.3.9600.16384_neutral, expandimos nuevamente, clic derecho en el sub-nodo de FolderLocations y clic en Add Setting to Pass 7 oobeSystem:

image

*Nota: Estos componentes están disponible para la arquitectura de 32 y 64 bits, así que es necesario agregar la que se requiera de acuerdo a la que tengamos instalada, es decir, con el inicio de x86 para 32 bits y amd64 como lo muestra la captura para 64 bits. Por supuesto, podemos agregar ambos si queremos.

En el panel central, debajo de Answer File, seleccionamos FolderLocations para habilitar el panel derecho de Propiedades, nos situamos en ProfilesDirectory y le indicamos la unidad donde deseamos que los perfiles estén, con la respectiva carpeta de Users.

Para este caso, que todo va para la unidad E:, sería: E:Users

image

*Nota: No es obligatorio que la primera carpeta sea Users o Usuarios, pero no pueden quedar en la raíz del disco o partición.

Esto es todo lo que necesitamos, así que una vez hecho, clic en el menú File > Save Answer File As…

image

Guardamos el archivo en un directorio de fácil acceso y lo llamamos: AutoUnattend.xml

image

*Nota: El nombre en preferencia debe ser Unattend o AutoUnattend.

Para que el XML nos quede genérico y no dependa siempre de la msima imagen, podemos editarlo y borarle todo lo que esté dentro de la etiqueta cpi:

image

El contenido entonces se vería similar a la siguiente captura:

image

Para evitar todo este procedimiento anterior, los que deseen pueden bajar el XML desde mi SkyDrive para 64 bits, así sólo será necesario editar la letra de unidad:

Enlace directo: http://sdrv.ms/1eTqrhC

Configurando y ejecutando Sysprep

Después de crear el Archivo de Respuesta (AutoUnattend.xml), debemos copiarlo al directorio C:WindowsSystem32sysprep

image

Ahora, clic derecho en el botón de Inicio y en Símbolo del sistema (administrador):

image

En la consola ejecutamos: cd C:WindowsSystem32Sysprep para quedar ubicados en el directorio de Sysprep:

image

Ahora, cerramos TODO lo que tengamos abierto y procedemos a ejecutar:

sysprep.exe /oobe /reboot /unattend:AutoUnattend.xml

image

El proceso de Sysprep iniciará y después de unos momentos, Windows se reiniciará y arrancará en la fase de OOBE, que básicamente contiene la post-configuración al instalar o prender por primera vez una máquina con sistema operativo preinstalado.

image

image image

image image

image

¡Todo listo! Ya nuestros perfiles estarán ubicados en la nueva partición, incluyendo los que ya estaban creados previamente:

image

*Nota: En un ambiente de dominio, el equipo se saldrá completamente así que es necesario nombrarlo y unirlo otra vez, aunque lo ideal es aprovechar el mismo archivo de respuesta para automatizar este proceso. Trataré de cubrir esto en un futuro artículo.

Espero sea de utilidad.

PD. No olviden seguirme en Twitter: http://www.twitter.com/secalderonr

Saludos,

Checho