Establecer un fondo de pantalla predeterminado de forma manual para todos los usuarios en Windows 7

TipsLogo

Normalmente, como ya lo hemos visto en otros artículos, existen varias formas de predeterminar o establecer configuraciones o personalizaciones en un ambiente Windows, la más común es hacerlo manualmente, tal vez por implementación, utilizando herramientas del sistema operativo o de terceros o hacer un despliegue de políticas de grupo sea local o a nivel de Dominio.

El propósito de este post es lograr establecer una simple operación como el fondo de pantalla para que se convierta en el predeterminado para todos los usuarios, la diferencia será que lo haremos a nivel de registro que aunque se convierta en tal vez la última opción normalmente por lo que puede representar, indagándolo es tal vez la forma en que “configurando se aprende” como pretendo mostrar aquí, por lo menos desde donde mis pocos conocimientos me lo permiten.

*Nota: El artículo en su gran mayoría está como he tratado de hacerlos todos, explicando lo más que puedo para terminar con lo que se consideraría la solución o el Tip en este caso, como siempre, pueden saltarse si quieren e ir a la última parte:
“Por fin, Predeterminando el Fondo de pantalla para todos los usuarios…”

Explorando Windows…

Windows predeterminadamente establece un Tema que contiene el fondo de pantalla con el logo principal del sistema operativo pero, ¿Qué pasa cuando se establece ese tema? para ver los que nos conviene que es el fondo de pantalla, podemos hacer uso de Process Monitor de Sysinternals, activarlo cuando cambiemos el fondo y volver a ver los resultados.

Si buscamos por “Wallpaper”, siguiendo el patrón de detenernos en palabras que concuerten dentro de todo el trazo que entrega Process Monitor, podremos ver lo siguiente:

DW1

La primera columna de “Operation” determina el tipo de operación que se está haciendo, además de la función que se está utilizando.

Como ven en la captura anterior, la primera operación que resalto está utilizando la función ReadFile e indica la ruta de una imagen llamada “img0.jpg” ubicada en:
C:WindowsWebWallpaperWindowsimg0.jpg

Si abrimos en el Explorador de Windows o desde Process Monitor, hacemos clic derecho sobre la ruta y seleccionamos “Jump to”, veremos que la imagen hace referencia a la que precísamente Windows utiliza en el tema predeterminado:

image

Como la ruta está en un directorio global, todos los usuarios que se crean y que mantienen este tema predeterminado, harán la misma consulta al fondo de pantalla por lo que, si remplazáramos este fondo de pantalla por una imagen personalizada en formato .jpg lograríamos que todas las cuentas tuvieran el mismo fondo. Sin embargo, no es lo recomendado ni lo que haremos porque está protegido y administrado con una de las cuentas que actúan como servicio para operaciones especiales TrustedInstaller.

Como el resultado es satisfactorio (SUCCESS), Windows procede a realizar la segunda operación (Retomando la primera captura) y procede a utilizar la función WriteFile que escribe sobre el directorio de Roaming destinado para el usuario desde donde se está consultando, por ejemplo para el mío que se llama Ult64 escribe en:
C:UsersUtl64RoamingMicrosoftWindowsThemes un archivo llamado TranscodedWallpaper.jpg. Como en la anterior operación, si vamos más a fondo y vemos qué imagen contiene ese archivo, veremos lo siguiente:

image

Como ven, se trata del mismo fondo de pantalla de la imagen (img0.jpg), esto quiere decir que Windows después de leer la ubicación del primero, sobreescribe este con diferente nombre, (Pueden probarlo cambiando de tema y verán que el fondo siempre corresponderá al que está aplicado a la pantalla en el momento).

La pregunta es, ¿Para qué sirve esta ruta? Pues bien, la respuesta como siempre la tiene Process Monitor; y es que si seguimos buscando nos encontraremos esto:

DW2

Básicamente, Windows utiliza la función RegOpenKey para abrir la clave de HKEY_CURRENT_USERControl PanelDesktop, hacer la consulta del valor (RegQueryValue) Wallpaper y además de establecerlo utilizando la función RegSetValue (Ver lo que está resaltado en rojo).

Es muy normal este tipo de operaciones, lo interesante está es que si abrimos el contenido del valor Wallpaper desde el Editor de Registro de Windows (Regedit.exe), nos encontramos con una grata sorpresa:

DW3

¡Aquí es donde aparece la famosa ruta!
A las conclusiones que puedo llegar es que al establecerse un tema, a pesar de realizar la primera consulta en los fondos predeterminados, utiliza el directorio y el nombre de TranscodedWallpaper.jpg donde Windows puede escribir a su gusto por lo que los cambios serán siempre dinámicos y sin problema de permisos.

Lastimosamente no podemos predeterminar un fondo de pantalla remplazando sólo la ruta que aparece en el valor de Wallpaper porque cada que se cambia manualmente el fondo, la ruta se sobreescribe por lo que el cambio no servirá de nada.

Ya vimos qué sucede cuando aplicamos un tema con su respectivo fondo de pantalla manualmente, ahora, analicemos un poco el procedimiento cuando se aplican las políticas de grupo:

Explorando las Políticas…

Las políticas de grupo (GPO) son el mejor y más correcto método para administrar nuestros equipos clientes, por lo general unidos a un Dominio donde siempre se manejará una gestión centralizada pero además existen políticas locales que pueden ser creadas o manipuladas desde Windows en ediciones específicas, para Windows 7 en las ediciones Enterprise y Ultimate.

Si se quiere predeterminar un fondo de pantalla para todos los usuarios, si los equipos están unidos a un dominio, esta debería ser la forma de hacerlo, y aunque no nos centraremos en esto, el procedimiento es relativamente fácil:

En el Editor de políticas de grupo, se debe ir a la siguiente ruta:

Configuraciones de usuarioPlantillas administrativasEscritorioActive Desktop

La política en cuestión se llama Tapiz de escritorio:

image

Al abrir la Política, veremos que basta con habilitarla, indicarle una ruta a una imagen con formato .jpg y un Estilo de papel tapiz (Ajustado, Centrado, Expandido, etc):

image

*Nota: Como las opciones de la política lo especifican, se le puede indicar tanto una ruta local como un recurso compartido con el formato estándar.

Hasta aquí es el procedimiento normal, pero nuevamente ¿Qué pasa cuando se aplica esta política?

Si monitoreamos nuevamente con Process Monitor y volvemos a utilizar búsquedas basándonos en palabras relacionadas con lo que estamos haciendo, por ejemplo “Wallpaper” empezaremos a ver algunos resultados muy interesantes:

image

*Nota: Hacer clic en la imagen para verla en su tamaño normal.

Como verán, Windows al momento de aplicar las políticas hace unas operaciones sobre la clave respectiva a Configuración de usuario en las Políticas de grupo:

HKCUSoftwareMicrosoftWindowsCurrentVersionGroup Policy Objects{B14D9D7C-7728-4C31-96FC-A59F1AB2D6E3}User

Allí crea y consulta dos valores, Wallpaper y WallpaperStyle bajo la subclave:

UserSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem

Si aprovechamos de nuevo las ventajas de Process Monitor, más específicamente su función de hacer Jump to directo a la clave desde la que se lanza veremos que estos dos valores contienen lo que quizá terminarían de configurar que pertenecen a los que estableció la Política de grupo:

DW5

El contenido de la cadena del primera valor corresponde a la ruta de la imagen que establecí como fondo de pantalla predefinido para todos los usuarios (Wallpaper), el contenido del segundo valor (WallpaperStyle) corresponde al tipo de ajuste que tendrá la imagen en el escritorio (Extendida, Ajustada, etc).

Sin embargo, todo lo que se escriba en esta clave (HKCUSoftwareMicrosoftWindowsCurrentVersionGroup Policy Objects) sea por usuario o máquina, sólo determina las políticas aplicadas y los valores utilizados. Es decir, crear estas claves y subclaves junto con sus valores manualmente no aplicarán la política de la misma forma (En un principio creí que así sería) y es que, cada que se aplica una nueva política se crea un tipo de identificador para ésta debajo de esta clave.

Para encontrar dónde realmente estaba haciendo el cambio en el registro y que el sistema operativo tomara la configuración bastaba con deterse a mirar más la segunda parte de esta clave; como nos damos cuenta la primera parte hasta “Group Policy Objects” se refiere a la ubicación en el subarbol de HKEY_CURRENT_USER (HKCU) pero, después del ID está indicando otro adicional (UserSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem), si seguimos esto, adicionándole por supuesto el HKEY_CURRENT_USER al principio veremos que en efecto esta clave existe y que además nos da más información:

DW6

Tal cual lo había especificado la política y las claves anteriores, aquí estaban de nuevo los valores Wallpaper y WallpaperSytle con la configuración que se le entregó utilizando el Editor de políticas de grupo.

Para confirmar de que esta clave y valores se creaban sólo así, volví al Editor de Políticas, abrí la de Papel tapiz nuevamente y la cambié a No configurada que se comporta en este caso de la misma forma que Desactivada y en efecto, la clave despareció (Después de actualizar con F5 el Editor de Registro claro):

image

En conclusión, lo que hace la política es crear los valores Wallpaper y WallpaperStyle con sus respectivas cadenas tanto en la clave donde almacena las políticas creadas como en la ruta dentro del Registro para que aplique la configuración, en este caso del fondo de pantalla en:

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrent Version PoliciesSystem

Lo triste en mi perspectiva de esto es que la configuración para un fondo de pantalla predeterminado está bajo el subarbol de HKEY_CURRENT_USER (HKCU) y si recordamos bien, cada Perfil de usuario en Windows contiene una configuración diferente de este subarbol partiendo de lo que entrega la plantilla predeterminada de Windows almacenando todo en el archivo NTUSER.DAT dentro de la carpeta por perfil. Pueden ver un poco más en detalle lo del Perfil de usuario en Este artículo.

La pregunta es entonces, si esto era así ¿Cómo replica Windows la configuración por usuario a todos los perfiles que existen actualmente en el sistema cuando se aplica una de estas políticas?

La respuesta a esa pregunta tenía que estar en tratar de entender un poco más el proceso y es aquí cuando se llama nuevamente al Log que anteriormente había recogido con Process Monitor, y después de buscar un poco aún con la palabra “Wallpaper” encontré esto:

DW7

Primero, hay unas operaciones a nivel de sistema de archivos que utilizan un archivo Registry.pol, posteriormente Windows realizaba unas operaciones a nivel de Registro que incluían la creación de nuestra clave en cuestión con su respectivo valor (Wallpaper), después de hacer unas lecturas, procede a cerrar la clave y posteriormente a escribir un archivo en la carpeta del perfil con el que estaba activo en el momento llamado ntuser.pol, por último de nuevo hace la operación de creación de claves y valores respectivos pero para el segundo valor (WallpaperStyle). Siguiendo el monitoreo, volvía a escribir el archivo ntuser.pol pero no se muestra en la captura anterior.

Resulta que estos archivos cumplen una función específica y que daba respuesta a la pregunta planteada anteriormente. Ambos son creados y utilizados sólo cuando se activan o se gestionan políticas de grupo pero el primero, Registry.pol contiene toda la configuración de las políticas aplicables y además determina cómo se deben aplicar, el segundo por su parte, ntuser.pol es el que hace el trabajo “duro” y es el de replicar estas configuraciones que aplican por usuario a todos los perfiles de la máquina, forzando así que cuando el usuario inicia sesión tome los cambios que se han establecido.

Como ven, éste último es el que hace la réplica y con esto sabemos cómo es que resultan afectados todos los perfiles bajo HKEY_CURRENT_USER y además del por qué con establecer manualmente la política no basta.

De cualquier forma, esto es un resultado algo triste porque esta configuración no se puede realizar a nivel de máquina, es decir por HKEY_LOCAL_MACHINE (Aún así lo intenté) y no hay cómo (O no se cómo todavía) replicar lo que hace cuando se aplica una política.

Con esto confirmamos que el mejor método es hacerlo por políticas locales o de dominio pero, por fin entra lo que en primera es el objetivo del artículo:

¿Qué pasa cuando yo no tengo una edición con la que pueda trabajar con políticas de grupo y quiero tener este comportamiento de fondo predeterminado?

Por fin, Predeterminando el Fondo de pantalla para todos los usuarios…

Si no contamos con una edición como Windows 7 Enterprise o Ultimate o por lo menos, estamos unidos a un Dominio con Windows 7 Professional para que tome estas configuraciones y queremos tener un fondo de pantalla predeterminado, debemos entonces pasar a “forzar” nosotros este comportamiento ayudánonos de lo que descubrimos previamente siguienteo las políticas de grupo.

Hay dos cosas que debemos de tener en cuenta, los usuarios próximos a crear su propio perfil y los que actualmente tienen un perfil asignado en la máquina local, lamentablemente con este método no todo puede ser tan automatizado pensando en lo segundo (Usuarios que ya tienen perfil) pero se puede tratar de mitigar lo más posible.

Primero tomaremos ventaja de lo que podemos forzar a predeterminar y es el comportamiento para los nuevos perfiles de usuario que se van a crear y es que si la clave de HKEY_CURRENT_USER no contiene las claves y valores que predeterminan un fondo de pantalla podemos cargar el perfil predeterminado de Windows e indicar nosotros qué es lo que queremos que tenga como fondo de pantalla desde el momento que crea el perfil.

El proceso detallado para cargar y detallar el perfil predeterminado está en este artículo por lo que no entraré mucho en detalle, sin embargo mostraré de nuevo los parámetros para hacerlo por línea de comandos para que se entienda el paso a paso.

En el Equipo donde se crearán los perfiles, buscamos y seleccionamos una imagen de algun directorio del sistema, preferiblemente ubicarla en alguna unidad que sea global para todos los usuarios y que no corra el peligro de ser eliminada si un usuario se borra con su contenido, debe tener un formato (.JGP). Después de esto, hacemos clic en Inicio, tecleamos CMD, clic derecho sobre el resultado y seleccionamos “Ejecutar como administrador”.

En la consola de comandos ejecutamos la siguiente línea para cargar el Perfil predeterminado:

Reg Load HKLMDefault %SystemDrive%UsersDefaultNTUSER.DAT

image

Lo que haremos será crear la clave de System y los valores de Wallpaper y WallpaperStyle que determinarán el fondo de pantalla a ser utilizado y la ubicación dentro del escritorio.

Abrimos el Editor de Registro de Windows yendo al menú de inicio, tecleando Regedit y tecla ENTER.

En el Editor de Registro navegamos hasta la siguiente clave:

HKEY_LOCAL_MACHINEDefaultSoftwareMicrosoftWindowsCurrentVersionPolicies

Hacemos clic derecho sobre la clave de Policies y seleccionamos Nuevo, Clave:

image

El nombre de la clave debe ser System

image

En el panel de la mitad de la ventana de Editor de Registro hacemos clic derecho, seleccionamos Nuevo y Valor de cadena:

image

El nombre que le debemos indicar es: Wallpaper

Repetimos el paso de creación del valor de cadena y el nombre se lo especificamos como WallpaperStyle.

Debe verse similar a la siguiente captura:

image

Como no tiene nada aún, no nos servirá, para que funcione hacemos doble clic en cada una, en la primera Wallpaper debemos especificar como contenido la ruta del Fondo de pantalla que deseamos que todos los nuevos usuarios que se creen tengan, teniendo en cuenta que no lo podrán cambiar:

image

Hacemos clic en Aceptar para guardar el cambio y posteriormente doble clic en el segundo Valor WallpaperStyle, en éste debemos especificar la forma en que deseamos que se acomode en el escritorio con un número que identifique el comportamiento:

1: Rellenar
2: Expandida
3: En mosaico
4: Centrada
5: Ajustar

image

El resultado final debe ser similar al siguiente:

image

Cerramos el Editor de Registro, abrimos la Consola de comandos sea porque se haya minimizado o repitiendo los pasos para volver a abrir (Menú inicio, CMD, clic derecho, Ejecutar como administrador) y descargamos el Hive para que guarde los cambios y los establezca en cada nuevo perfil con el siguiente comando:

Reg unload HKLMDefault

image

*Nota: Asegúresen de que tanto en la carga como en la descarga del Perfil predeterminado el resultado indique que se completó correctamente, de lo contrario no se realizará la operación y puede generar problemas a los nuevos o existentes perfiles.

Todo está listo, la prueba de fuego es crear una nueva cuenta cuenta de usuario y ver que en efecto, se le esté aplicando el fondo de pantalla elegido y que además, no lo pueda cambiar:

image

Ya los nuevos Perfiles funcionarán como deseamos, el problema sigue es con los que ya están existentes y para nuestra mala fortuna, como comenté en la fase donde exploraba el comportamiento de las Políticas de grupo (Ver Explorando las Políticas) no podemos replicar el mismo comportamiento de forma masiva a nivel de registro porque el cambio está bajo HKEY_CURRENT_USER, sin embargo está en nostros encontrar alternativas.

Lo que podemos hacer es primero crear la correspondiente clave para que se fuerce la política (Muy similar a la anterior) y posteriormente distribuirla y ejecutarla en todos los usuarios que ya estaban activos localmente para que se aplique.

Para crear la clave, abrimos el Editor de Registro yendo a Inicio, teclea Regedit, clic derecho sobre el resultado y seleccionar “Ejecutar como administrador”.

Navegamos hasta la clave:

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicies

Aquí como para el perfil predeterminado, hacemos clic derecho sobre la clave de Policies, seleccionamos, Nuevo y Clave.

La clave debe llamarse igualmente System.

Ahora, sobre la derecha debajo del Valor predeterminado hacemos clic derecho, Nuevo, Valor de cadena y la llamamos Wallpaper.

Realizamos el paso nuevamente y llamamos a la nueva clave WallpaperStyle

Para crear esto también bastaría con abrir un Blog de notas y copiar:

image

Guardarlo con cualquier nombre y extensión .REG, ejecutarlo, luego dirigirse hasta la clave y rellenar el contenido tanto de Wallpaper como de WallpaperStyle entregándole la ruta del fondo de pantalla y el tipo de acomodación en el escritorio.

*Notas:
No hice capturas de pantalla porque es exactamente el mismo proceso descrito en la creación del la clave para el Perfil predeterminado.

La distribución se podría pensar en apoyarse por ejemplo de PsExec de Sysinternals.

¡Todo está listo! Una vez reiniciemos el equipo luego de aplicarle estos cambios a los usuarios que ya tenían perfil local, el fondo de pantalla se les debe cambiar al especificado y no se podrá cambiar.

De antemano disculpas por la extensión del post pero espero que pueda ser de utilidad.

Saludos,

Checho

Deja un comentario

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