El “Error en el Servicio de perfil de usuario al iniciar sesión…”, Windows PE, y su solución

Como ha sido costumbre desde años atrás, cada que me enfrento a un problema que resulta ser de lo más extraño, pero logro solucionarlo, me gusta documentarlo aquí para futuras personas que en algún punto lo tengan y resulten en el blog.

El problema

Hace unos días, un amigo vino a mi con un problema que había visto en algunas ocasiones de forma indirecta en los foros, pero nunca tuve la oportunidad de sentarme a investigarlo. Cuando intentaba iniciar sesión con el usuario local, aparecía el siguiente mensaje:

image

“Error en el servicio Servicio de perfil de usuario al iniciar sesión. No se puede cargar el perfil de usuario.”

*Nota: Es Windows 7 como lo ven, pero el mensaje no varía en versiones posteriores y la solución seguramente tampoco.

Después de dar Aceptar, aparecía Windows cerrando sesión y de nuevo estaba en la pantalla de inicio de sesión.

Como era un PC personal, no habían más cuentas de usuario creadas, ni el administrador integrado habilitado, así que no había mucho más para hacer en primera instancia.

La causa y su solución

La única manera que tenía de poder hacer más que aceptar un botón en vano, era encontrar la forma de poder realizar más tareas desde el escritorio del logon; así que procedí a utilizar un Entorno de Preinstalación para cargar desde él y remplazar el proceso sethc.exe con el de cmd.exe. De esta forma, podría ejecutar la consola de comandos desde la pantalla de inicio de sesión.

No entraré en detalle sobre cómo hacer este cambio, pues en un artículo pasado explico cómo hacerlo para cambiar la contraseña de Windows a la fuerza o crear nuevos usuarios:
http://geeks.ms/blogs/checho/archive/2013/09/07/cambiar-contrase-241-a-olvidada-para-recuperar-el-inicio-de-sesi-243-n-en-windows-8-8-1.aspx

*Nota: En TechNet Wiki, creé un artículo mostrando cómo generar el Windows PE de un forma más sencilla:
http://social.technet.microsoft.com/wiki/contents/articles/28497.how-to-crear-un-entorno-de-preinstalacion-de-windows-windows-pe-es-es.aspx

Después de crear el Windows PE, iniciar el equipo desde allí, hacer el cambio en el registro, iniciar Windows normalmente y presionar cinco veces la tecla SHIFT para lanzar la consola, ejecuté la consola de Servicios (Services.msc) y revisé el estado del servicio de perfil de usuario, pero no había problema alguno:

image

Incluso lo reinicié, pero aunque se completaba la operación, el mensaje continuaba saliendo.

Después de esto y pensarlo por un buen rato, recordé que cada perfil que va a iniciar en el sistema operativo, debe consultar una serie de recursos en su carpeta de Usuarios, incluyendo la disponibilidad de la ruta donde reside todo.

En la consola, ejecuté Regedit.exe para abrir el Editor de Registro y navegué hasta la clave:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

En esta clave, se encuentran unas sub-claves correspondientes a todos los usuarios que están interactuando con el sistema operativo incluyendo cuentas como la de SYSTEM y NetworkService. Cada uno de los usuarios está representado por su identificador único o SID.

Las terminadas en 18, 19 y 20 siempre estarán; de ahí siguen las que pertenecen a usuarios locales que incluso son más grandes.

Para mi gran fortuna, aquí encontré la causa real del problema y la clave principal para la solución:

image

Explicando un poco mejor la imagen: El SID de cada usuario es único e irrepetible, pues con esto Windows lo identifica para muchísimas tareas. Cuando se duplica un SID, normalmente el sistema operativo intenta crear un usuario temporal para iniciar utilizando el mismo identificador y a la otra clave le asigna un .bak al final.

Como ven en la imagen, la clave que tenía extensión .bak se estaba refiriendo a la ubicación real del usuario, es decir, de Mery. El valor que guarda la ruta es ProfileImagePath.

La otra clave por el contrario, estaba referenciando una ubicación de usuario temporal y ni siquiera tenía todos los valores necesarios creados:

image

Como esta era la clave sin extensión, era la que el usuario Mery estaba utilizando, así que nunca iba a encontrar los recursos necesarios para iniciar sesión y ahí es donde salí el extraño error referenciando al servicio.

La solución entonces fue muy sencilla, debía eliminar la clave que NO tenía la extensión .bak; es decir, la que referenciaba al usuario TEMP y renombrar la otra clave con el mismo SID para quitarle la extensión .bak.

Después de esto, cerré el Editor de Registro, el CMD y reinicié el equipo. Una vez reiniciado, pude acceder al usuario sin ningún problema.

Espero que esto pueda ser de utilidad a los que se encuentren con el problema.

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

Saludos.

Checho