Situación
Como todos conocemos y asumimos (sorprendentemente), Windows es un sistema que se guarrea automáticamente con el tiempo.
Para evitarlo, hemos decidido virtualizar un escritorio Windows 2008 Server R2 (con la idea equivocada de que por ser Server será más estable) e instalarlo en modo amnésico, o no persistente (es decir, cada vez que apagas y enciendes la máquina virtual, los cambios desaparecen), programado para olvidar todo cada semana, pero trabajamos en un entorno con muchos usuarios que quieren guardar sus configuraciones para trabajar cómodamente.
Para conseguirlo, utilizamos una directiva de grupo GPO en la que configuramos la redirección de directorios (Folder Redirection) y perfiles móviles (Roaming Profile Path) para que todas las configuraciones de usuario se guarden en discos duros de red que se encuentran fuera de esta máquina.
Problema
Cuando un usuario ancla un acceso directo a la barra de inicio, todo funciona hasta que el servidor ejecuta su amnesia, tras lo cual desaparece misteriosamente de ahí.
Nos ponemos a investigar, y resulta que en la ruta
%AppData%\Roaming\Microsoft\Internet Explorer\Quick Launch\User
Pinned\TaskBar\
encontramos todos los accesos directos que el usuario ha anclado
(de hecho, puede que hasta encuentres duplicados de alguno), así que... ¿por qué no
le aparecen?
Motivo
El problema radica en que, para que los accesos directos aparezcan en la barra de
inicio, no solo hace falta tenerlos en la carpeta que hemos comentado antes, sino
que
además hacen falta las configuraciones que encontramos en la ruta
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband
del registro de Windows (que podemos abrir ejecutando
regedit.exe), las cuales son olvidadas cada semana junto con el resto
de cambios en el registro.
Solución
Lo que vamos a hacer es crear dos scripts que se encarguen de respaldar y restaurar esas claves del registro cada vez que el usuario inicia o cierra la sesión. Ambos los colocaremos en una ruta en que todos los usuarios tengan permisos de lectura y ejecución.
Creamos un fichero de texto llamado taskbar-save.bat que contenga esto:
reg export HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband %AppData%\taskband.reg
A este otro lo llamaremos taskbar-load.bat:
reg import %AppData%\taskband.reg
Ahora vamos a asignar esos scripts a donde les corresponde. Para ello, abrimos el Administrador de directivas de grupo > buscamos nuestro GPO > botón derecho > Editar > Configuración de usuario > Directivas > Configuración de Windows > Scripts (inicio de sesión o cierre de sesión), y encontraremos dos opciones.
Haz doble click en
Iniciar sesión > Agregar > Selecciona el script
taskbar-load.bat > Aceptar.
Hacemos lo mismo en Cerrar sesión, pero seleccionamos
taskbar-save.bat.
Ahora, cada vez que un usuario cierre su sesión, se guardará su configuración de
aplicaciones ancladas en %AppData%\taskband.reg, y cuando la vuelva a
abrir, se cargará de ahí mismo.