miércoles, 7 de enero de 2015

Mostrar todos los usuarios disponibles antes de iniciar sesión en Windows 8/8.1

 

Uno de los cambios pequeños que tuvo el comportamiento de inicio de sesión en Windows 8/8.1, es que siempre intentará arrancar con el último usuario que estuvo activo en el sistema; aunque puede ser útil si solo tenemos un usuario, no es tan entretenido si es un equipo compartido en el que cada determinado tiempo un nuevo usuario requiere iniciar sesión. La pregunta del cómo decirle a Windows que muestre todos los usuarios antes de iniciar sesión, tiene cierta frecuencia en los foros oficiales de Microsoft Community así que después de indagar un poco al respecto, decidí documentar el procedimiento paso a paso para que en cada inicio de sesión se deba escoger el usuario y el sistema operativo no lo haga de forma automática. El objetivo del post, es ver el inicio así: 2015-01-07_11-33-12 Como ven, la idea es siempre poder escoger el usuario antes de ingresar las credenciales. Cada vez que Windows inicia, o se va a la pantalla de inicio de sesión cerrando o bloqueando sesión, el sistema operativo busca el estado de un valor llamado Enabled en la clave:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\UserSwitch Process Monitor puede dar fe de ello: 2015-01-07_11-21-41 Si el valor Enabled está habilitado, es decir, tiene uno como contenido, Windows siempre mostrará todos los usuarios antes de iniciar sesión, pero normalmente este valor está en cero, o sea deshabilitado: 2015-01-07_11-29-03 Normalmente bastaría con habilitarlo y listo, pero en este caso, aunque le pongamos el contenido de de uno, se volverá a cambiar a cero en cada inicio de sesión. ¡Ahí el problema! Si bien se podrían editar los permisos para prohibirle al usuario SYSTEM, que es responsable, se generarían problemas después para que Windows entienda otros cambios que se deben hacer sobre la clave de registro. Lo que haremos a continuación, será automatizar el cambio del contenido de la clave, así en cada inicio de sesión tendrá el comportamiento esperado.
Automatizando el cambio de clave en Registro
Lo primero que haremos, será abrir un blog de notas en limpio y escribir el siguiente comando: REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\UserSwitch /v Enabled /t REG_DWORD /d 1 /f Todo es una sola línea: 2015-01-07_11-41-39 Lo que hace el comando es básicamente escribir uno en el valor Enabled. A continuación, clic en Archivo > Guardar como y lo ponemos en una ubicación donde podamos escribir como en el Escritorio. El nombre será: EnaUsr.bat 2015-01-07_11-45-20 Después de esto, movemos el archivo manualmente al disco local C:\ Debería quedar entonces en C:\EnaUsr.bat 2015-01-07_11-48-32 Ese archivo siempre pondrá el contenido de uno sobre el valor cada que se llame; ahora necesitamos una forma de poder llamarlo siempre y que funcione sin mayor inconveniente. La forma más fácil para hacer esto, es a través de una Tarea Programada. Antes que nada, es necesario que en el Registro de Windows, el cambio de contenido a uno esté por lo menos la primera vez antes de proceder al Programador de Tareas, así que hacemos clic derecho sobre EnaUsr.bat y seleccionamos Ejecutar como administrador: 2015-01-07_12-28-24 Para verificar, abrimos el Registro de Windows desde la Pantalla de Inicio (Regedit.exe) y navegamos hasta: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\UserSwitch El valor de Enabled, debe estar en uno: 2015-01-07_12-30-46 Hecho esto, procedemos a crear la tarea:
Creando la Tarea Programada
Desde la Pantalla de Inicio, escribimos Programar tareas y lo ejecutamos: 2015-01-07_11-55-08 En la ventana de Programar tareas, clic en Crear tarea en el panel derecho: 2015-01-07_11-56-33 En la pestaña de General, escribimos un nombre, por ejemplo: Mostrar usuarios y luego una descripción que explique el propósito de esta tarea: 2015-01-07_12-00-29 Después, en la parte inferior de la misma pestaña, cambiamos a Windows 8.1 el Configurar para: 2015-01-07_12-03-03 Como necesitamos que esta tarea se ejecute independiente del usuario que inicie sesión, es necesario decirle al Programador de Tareas que siempre utilice el usuario de SYSTEM; para esto, hacemos clic en el botón Cambiar usuario o grupo en la misma pestaña de General, copiamos SYSTEM y clic en Aceptar: 2015-01-07_12-08-37 La pestaña de General debería verse así: 2015-01-07_12-10-34 Pasamos a la pestaña de Desencadenadores y clic en el botón Nuevo: 2015-01-07_12-13-44 Al lado de Iniciar la tarea, escogemos Al iniciar la sesión y clic en Aceptar: 2015-01-07_12-17-14 Pasamos a la pestaña de Acciones y hacemos clic en el botón Nueva: 2015-01-07_12-19-03 En la ventana de Nueva acción, dejamos la opción de Iniciar un programa que está de forma predeterminada, hacemos clic en el botón Examinar, buscamos nuestro archivo por lotes ubicado en C:\EnaUsr.bat y clic en Aceptar: 2015-01-07_12-20-41 ¡Todo listo! De vuelta en la ventana de Crear tarea, hacemos clic en Aceptar para terminar y cerrar. En la ventana de Programador de tareas, al pararnos en el nodo de Biblioteca del Programador de tareas, deberíamos poder ver nuestra tarea creada en el panel central: 2015-01-07_12-23-58 Cerramos el Programador de tareas y habremos terminado. Lo único que queda, es reiniciar el equipo por lo menos dos veces y ver que en efecto, siempre debamos escoger nuestro usuario de la lista disponible sin importar con quién iniciemos y reiniciemos: 2015-01-07_12-34-53 Espero haber sido claro y que sea de utilidad. Saludos.