Windows Deployment & Sysinternals, mejor juntos: Desplegar una imagen para mostrar a todos los usuarios desde un perfil predeterminado

¡Hola!

*Nota: La primera parte del artículo explico el problema y los caminos para encontrar la solución que buscaba, si desean ir directo al proceso mencionado en el título, pueden empezar desde “A todas estas… ¿Cuál es entonces la solución?” más abajo en este artículo.

Realmente me alegra mucho cuando puedo escribir algo aquí que considero de utilidad, en este caso aunque puede ser algo tan sencillo como la imagen del perfil de usuario, puede que para muchas compañías que busquen estandarizar su imagen maestra llegue a tener una importancia relevante.

Básicamente la imagen del perfil de usuario no representa mayor cosa que sólo una forma de mostrar un distintivo por usuario, normalmente puede ser una foto o en general cualquier imagen que sea de nuestro gusto. Para las empresas sin embargo, se convierte en una oportunidad para especificar el logo por ejemplo representativo de la organización.

DUP2

El problema, es que si creamos una Imagen de Windows 7 con un perfil personalizado, la foto de perfil sólo aplica a esa primera cuenta (Que seguramente sería la de Administrador integrada que resellamos); sin embargo, al crear otra cuenta, Windows nuevamente asigna una al azar y no lograríamos nada.

Seguramente se preguntarán ¿Qué tiene que ver Sysinternals con todo esto? Pues bien, hasta este punto estaba yo y es que a pesar de que la personalización del perfil obtiene fondos de pantalla, modificaciones en el registro y hasta configuraciones del menú inicio, estos detalles no. Debía entonces averiguar qué hacía Windows cuando creaba la cuenta y asignaba la imagen para tratar de personalizar el comportamiento.

Lo primero que indagué, gracias a la ayuda de David Nudelman es que hay dos imágenes predeterminadas para el primer usuario y para la cuenta de invitado, ámbas están en el directorio: C:ProgramDataMicrosoftUser Account Pictures, los nombres son guest.bmp y user.bmp:

*Nota: El directorio ProgramData está oculto de forma predeterminada, para verlo hay que entrar a las opciones de carpeta, pestaña ver y seleccionar Mostrar archivos y carpetas ocultos.

DUP4

Teniendo esto presente, podría remplazar las dos con la imagen que quería pero esto sólo me garantizaría que la primera cuenta de usuario y la de invitado además de la del perfil predeterminado tendrían la imagen personalizada. ¿Qué pasaba entonces con el resto de cuentas que creara?

Dentro de la carpeta Default Pictures están todas las imágenes que Windows trae de forma predeterminada en la instalación para repartirlas entre todas las cuentas de usuario que se creen, y al entrar me di cuenta que tenían algo en común y era el nombre “usertile#”

¡Aquí es donde entra a jugar Process Monitor!

Sabiendo que la elección es aleatoria y que “algo” podría darme el nombre de las imágenes, decidí hacer el monitoreo completo para ver qué podía encontrar. Lo primero que hice fue como siempre ir al menú Filter, Filter… y establecer los parámetros de monitoreo al proceso Explorer.exe:

DUP3

Para reproducir el comportamiento bastaba con crear una nueva cuenta, para esto clic en Inicio, clic en la imagen de perfil y posteriormente clic en el enlace de Administrar otras cuentas y finalmente crear una nueva cuenta ingresándole el nombre de Usuario y el tipo de usuario, por último clic en Crear cuenta:

DUP5

Como no sabía por dónde empezar a buscar en el Monitoreo de Process Monitor, decidí buscar por lo que estuviera relacionado a “tile” que era como finalizaba cada imagen dentro de la carpeta Default Pictures.

Para hacer el filtro basta presionar CTRL + F dentro de Process Monitor y buscar.

El primer resultado, bastante satisfactorio para mí fueron unas líneas en el registro que me llamaron bastante la atención:

DUP1

Si nos detenemos un poco a analizar, hay cuatro operaciones que se realizan y en donde está la clave a lo que buscaba:

Primero utilizando la función RegOpenKey, Windows abre la llave de Registro en HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer, lamentablemente el resultado aquí es NAME NOT FOUND y recordemos que HKLM hace referencia a HKEY_LOCAL_MACHINE donde están ubicadas todas las llaves que representan la configuración de aplicaciones y de Windows a nivel de equipo o máquina.

Al no poder encontrar esta llave, pasa a abrirla en la misma ruta pero a nivel de usuario, es decir en: HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer con un resultado de SUCCESS que indica que la llave existe, por lo que esta vez sí se abre para empezar a trabajar con ella.

*Nota: Recordemos que en HKEY_CURRENT_USER (HKCU) están las configuraciones de aplicaciones y de componentes propias por usuario, por lo que la configuración puede variar por cada perfil que se cree.

Ahora que la llave estaba abierta, Windows utilizó la función RegQueryValue para realizar una consulta a un valor dentro de esa llave de registro que era UseDefaultTile, aunque con un resultado de NAME NOT FOUND que indicaba que el valor no estaba creado, posteriormente pasó entonces a terminar la operación con la clave de registro cerrándola haciendo uso de RegCloseKey.

Claramente, la clave que no estaba creada UseDefaultTile es la que especifica el uso de la Imagen predeterminada para el usuario, normalmente estas claves se crean caundo se implementa una política de grupo  y aunque no esté, Windows hace la consulta (Aquí otra pista es que venía de Policies).

Para comprobarlo entonces, procedí a ir hasta esa llave de Registro haciendo clic derecho en la llave anterior que había resultado exitosa con Process Monitor y seleccionando Jump To:

DUP6

Una vez allí, procedí a crear un nuevo Valor DWORD de 32 bits y lo llamé tal cual estaba buscando Windows UseDefaultTile y le asigné el valor de 1 para que quedara activo:

DUP7

DUP8

Al entrar de nuevo en la Administración de cuentas y ver el comportamiento al crear otra cuenta me encontré con esto:

DUP9

La imagen por más que creara otra cuenta nueva era la que predeterminada está para “user” en el directorio que mencioné el principio del artículo: C:ProgramDataMicrosoftUser Account Pictures

Sin embargo, esta no era la imagen que yo tenía para el usuario actualmente por lo que la cadena estaba completa:

Las dos imágenes (user.bmp y guest.bmp) que están en la carpeta User Account Pictures se asignan a la primera cuenta que se crea pero con este valor además, se utilizan para predeterminar todas las cuentas con la misma imagen.

La solución consistía entonces en sí remplazar las imágenes predeterminadas por la que quería que tuvieran todas las cuentas para que se visulizara también en las cuentas creadas:

DUP10

Automaticamente, todas las cuentas tomarían el cambio:

DUP11

Hasta aquí estaba casi todo listo, exceptuando por un detalle más y es que el cambio en la llave de Registro lo había hecho en la de HKEY_CURRENT_USER que indica que las cuentas que se creen desde otra cuenta no tomarán esta imagen predeterminada y sería volver a lo mismo.

A todas estas… ¿Cuál es entonces la solución?

Afortunádamente, aunque esa misma llave no estuviera en HKEY_LOCAL_MACHINE, Windows hacía consulta primero en ella, pensé entonces que creándola y agregándole la clave podría haber una posibilidad puesto que obligaría a nivel de equipo y no de usuario.

A continuación, indicaré paso a paso el procedimiento exacto para asegurarnos de que todas las cuentas que se creen mantengan la misma imagen y no se puedan cambiar:

– Lo primero es habilitar la visualización de archivos y carpetas desde las Opciones de carpeta, ahora navegamos hasta el directorio ya mencionado donde están todas las imágenes para mostrar de Windows:

C:ProgramDataMicrosoftUser Account Pictures

– En la carpeta, borramos las dos imágenes con el nombre de guest y user respectivamente.

– Buscamos la imagen que deseamos predeterminar para todos los usuarios y la pegamos en esa misma ruta, debemos crear una copia y renombrarla para que tengamos finalmente las dos imágenes guest y user

– Una vez hecho esto, hacemos clic en Inicio, tecleamos Regedit, clic derecho y “Ejecutar como administrador

– En el Registro de Windows navegamos hasta:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPolicies

– Allí, hacemos clic derecho sobre la carpeta de Policies, sobre el menú contextual seleccionamos Nueva > Llave (New > Key):

DUP12

La debemos llamar Explorer:

DUP13

Nos situamos sobre la nueva carpeta o llave creada Explorer y en el panel derecho, debajo de la clave de Default hacemos clic derecho, Nuevo > Valor DWORD (32 bits) (New > DWORD (32 bit) Value) y lo llamamos UseDefaultTile con un valor de 1:

DUP14

Si lo prefieren, pueden bajar la llave de Registro que crea la llave y la clave desde aquí:

¡Todo listo! Ahora no importa desde dónde se cree, siempre tomará la imagen que remplazamos por lo que habremos logrado nuestra personalización:

DUP15

Además de esto, desde ninguna cuenta se podrá hacer el cambio de imagen (A menos de que sea por el Registro de Windows):

DUP16

Espero les pueda ser de utilidad.

Saludos,

Checho

4 comentarios en “Windows Deployment & Sysinternals, mejor juntos: Desplegar una imagen para mostrar a todos los usuarios desde un perfil predeterminado”

  1. Excelente aporte…y asi como te dijo David…siempre por GPO…asi que luego desplegamos las modificaciones al registro usando Group Policy Preferences!

  2. Checho, awesomeness tiene limite. Tienes que dejar de escribir siempre los mejores articulos!

    Excelente el articulo, en especial por el incentivo al troubleshooting!

Deja un comentario

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