Checho's Blog

Talking about Windows Internals, Deployment and Troubleshooting

Artículos recientes

News and Awards

Follow me on Twitter and LinkedIn

@secalderonr

View Sergio Calderon's profile on LinkedIn

Recomendados

Tags

Community

Email Notifications

Archives

El mensaje “…Inició sesión con un perfil temporal…” al intentar ingresar en Windows 7, Process Monitor y su solución.

¡Hola!

Me alegra mucho estar de nuevo por acá, y espero traerles en estas próximas semanas un par de artículos de detalles que he podido aprender en los últimos meses y que tal vez les pueda ser de utilidad.

No empiezo con eso porque afortunádamente, mientras preparaba uno de esos artículos me encontré con un problema que mucho había visto pero que no me había tocado enfrentar.

No sobra decirlo, como siempre nos iremos por diferentes fases, El problema, La causa y La solución, el que desee puede pasar a lo último para que compare e intente solucionar el problema si es que es el mismo comportamiento. Esta vez no hay Fix para descargar porque aunque puede ser la misma solución varían varios aspectos que se darán cuenta en el artículo.

El problema

Pues bien, el adelanto es que estaba haciendo una serie de pruebas sobre diferentes escenarios que tiene la Redirección de carpetas de usuario pero en una de todas, reinicié el equipo y al intentar ingresar a la cuenta, el inicio era como si fuera primera vez que estuviera entrando, por lo que tardó más y recibí el siguiente mensaje:

ProfileError

You have been logged on with a temporary profile.
You cannot access your files and files created in this profile will be deleted when you log off. To fix this, log off and try logging on later.
Please see the event log for details or contact your system administrator.”

No se cargó correctamente su perfil de usuario. Inició sesión con un perfil temporal.
Los cambios que se efectúen en este perfil se perderán cuando se cierre la sesión. Consulte el registro de eventos para obtener información detallada o póngase en contacto con el administrador.”

El funcionamiento de Windows en general se comportaba bien, excepto porque aunque tenía el mismo nombre de mi perfil no era mi perfil y por más que volviera a reiniciar siempre me creaba uno temporal.

Lo extraño era que el perfil de Administrador integrado estaba iniciando bien por lo que el problema se estaba causando sólo en este perfil en particular.

La causa

*Nota: Este problema está documentado en una KB de Microsoft para Windows Vista que debería ser muy similar en Windows 7: http://support.microsoft.com/kb/947242/es 

Lamentablemente, la solución propuesta no me sirvió, por tanto tenía que encontrar alguna por mi cuenta si quería recuperar mi perfil.

Sólo existe una herramienta lo suficientemente estupenda para que me hubiera podido ayudar, por supuesto estoy hablando de Process Monitor de Sysinternals.

No había nada que pudiera encontrar en Windows puesto que una vez iniciado ya el problema estaba ocurriendo, pero como cada vez se creaba una cuenta nueva, pensé que podría encontrar pistas si analizaba qué estaba ocurriendo en el inicio de sesión, ¡Process Monitor sabe qué hacer!

Hace un tiempo en el problema de los Remitentes pantallazos azules con el controlador de Procmon comenté que Process Monitor tiene una funcionalidad para habilitar Boot Logging que, básicamente carga un controlador en el inicio de Windows antes que casi todos por lo que me permite monitorear lo que sucede antes de que se inicie una sesión, basta con ir al menú Options, seleccionar Enable Boot Logging:

PE11

Procedí, reinicié el sistema y al ingresar nuevamente me encontré con el mismo mensaje, sin embargo ejecuté Process Monitor y efectivamente ya tenía toda la traza generada al ingresar, era el turno de empezar a buscar.

Considero una buena práctica utilizar la función de búsqueda en Process Monitor (En varias de las herramientas de Sysinternals en realidad) y tratar de encontrar resultados con palabras clave referentes al problema, en esta ocasión mi búsqueda fue por : profile

*Nota: Como dije en otro artículo, recomiendo en estas búsquedas utilizar los nombres en inglés porque internamente Windows siempre los referenciará así cuando existen.

Después de pasar algunos eventos que no se relacionaban mucho, encontré la clave de todo:

PE10

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

Como verán, hay varias operaciones que se están realizando, todas con resultados exitosos (SUCCESS), pero detengámonos a analizar un poco:

La primera operación que referencio está abriendo en la clave de Registro ProfileList una subclave que hace referencia a un SID (Identificador único) en:
HKLM\Software\Microsoft\Windows NT\CurrentVersion

La clave completa es:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-817817061-500146855-1629396408-1003

*Nota: Recordemos que HKLM hace referencia a HKEY_LOCAL_MACHINE.

Un SID se reconoce por una serie de números que tienen un comienzo muy similar (En este caso S-1-5-21-), existe SID por usuario y por máquina, en este caso, estaba referenciando a un usuario, el problema es que no sabía a quién todavía.

*Nota: El SID varía por usuario y por máquina por lo que si tienen el mismo problema verán otro número diferente en caso de que decidan analizarlo igual.

Para saber si esto tenía algo que ver con lo que buscaba, aproveché a Process Monitor así que hice clic derecho sobre la clave que se estaba abriendo y seleccioné Jump To (Para ir directamente a la ubicación en el Registro de Windows).

En el Registro me encontré con dos cosas sumamente interesantes, por el lado del Arbol de registro esto fue lo que vi:

PE7

La primera subclave que tengo encerrada (S-1-5-21-817817061-500146855-1629396408-1003) era la que me hizo referencia Process Monitor y su contenido era el siguiente:

PE12

Efectivamente los valores estaban relacionados con un perfil de usuario, el valor específico de ProfileImagePath que además está referenciado en la captura de Process Monitor y al cual hace consultas (RegQueryValue) está indicando la ruta de un perfil Temporal:

C:\Users\TEMP.WIN-07Q5QALI9TH.008

Lo que no entendía es que este no era mi usuario, aquí estaba utilizando su nombre real pero en Windows yo seguía apareciendo con mi nombre de usuario (Demo).

Me devolví hasta el arbol de Registro y para mi sorpresa detallé que la otra subclave que está subrayada en la captura que mostré más arriba tenía exactamente el mismo SID que la anterior (S-1-5-21-817817061-500146855-1629396408-1003), con excepción de que éste terminaba en .bak que hace referencia normalmente a Backup.

Esta fue mi sorpresa cuando decidí ver su contenido:

PE13

Como verán, también hace referencia a un perfil de usuario, pero esta vez el contenido del valor ProfileImagePath sí hace referencia a mi usuario (E:\Users\Demo), además difiere del anterior en que está tratando de buscarlo en otra unidad (E:\), aquí pensé en la Redirección de carpetas que estaba trabajando (Ya tocaremos el tema en específico en otro artículo).

Obviamente no quería renunciar a la redirección de carpetas y perfiles puesto que ya había especificado que quería escribir en E:\, sin embargo no entendía:

¿Por qué dos cuentas con el mismo SID?

¿Porqué está iniciando con el temporal y no con el real?

Para tratar de responder esto volví al Process Monitor para ver un poco más las tareas posteriores y si detallamos la primera captura, hay algo que me llamó la atención y que hace justo después de terminar estas tareas en el Registro:

PE14

Había una operación exitosa a nivel de sistema de archivos (Se reconoce por el icono de la lupa sobre la carpeta amarilla) que estaba creando, consultando y cerrando justo en la carpeta del perfil que hace poco había detallado en el Registro y que estaba como primario: C:\Users\TEMP.WIN07Q5QAL19TH.005

Me pareció extraño sin embargo que la terminación fuera diferente, así que fui a la carpeta de Perfiles de usuario desde el Process Monitor y encontré que había una carpeta de perfil temporal por cada usuario que se estaba creando al reiniciar Windows:

image

Ahí estaba mi carpeta anterior sin embargo de “Demo” pero haciendo referencia a su primera ubicación original (C:\Users\Demo), como yo había cambiado de unidad busqué en Process Monitor para ver si también se estaba creando la nueva carpeta en la unidad E: pero:

PE2

Mi carpeta no se estaba creando cuando cargaba Windows.

Me devolví al Registro de Windows gracias a que vi que en la traza de Process Monitor había dicho que la referencia a estas carpetas estaba en la clave ProfileList, ésta contiene toda la redirección de perfiles de usuario, incluyendo la de ProgramData que se refiere a ubicación general para todos los perfiles:

image

Hasta aquí se podía entender que no se creaba la carpeta del nuevo perfil “Demo” en la unidad E:\ que era la que trataba de buscar pero sí se creaba un perfil temporal, la ubicación era en C:\Users\ porque el valor ProfilesDirectory de la clave ProfileList especifica %SystemDrive%\Users.

*Nota: %SystemDrive% es una variable de entorno que hace referencia a la unidad donde está instalada Windows, en la mayoría de los casos en C:\

A parte de esto, puedo asegurar que Windows es suprémamente inteligente porque es autosuficiente para valerse de cuentas temporales y poder ingresar al sistema, aunque obvio se borraba todo el contenido al volver a reiniciar.

No me iba a dar por rendido sin embargo, así que pensé que si yo creaba la carpeta explícitamente en la unidad E:\ de nombre Users\Demo, Windows debía encontrarla y así podría iniciar con el perfil nuevamente.

Para mi mala fortuna, aunque la creé, esto no fue así y Windows seguía creando perfiles temporales.

Me acordé que que la carpeta del perfil con todo el contenido normal sí seguía en la ubicación original y predeterminada de C:\Users, así que pensé que si era porque no encontraba su ubicación, volviendo a poner la unidad en el valor ProfileImagePath en vez de E: a C: se debía reparar el problema:

image

Reinicié el sistema y ¡Oh sorpresa! Ya no había más perfil temporal, y funcionaba.

Me alegró esto porque ya sabía que era a la carpeta específica que se había creado originalmente la que se debíe referencia para que el perfil cargara pero no entendía qué tenía esa carpeta que no se volviera a referenciar en la otra unidad si después de todo los Documentos, Imágenes, Música y demás son para almacenamiento.

Aquí es donde me detuve y pensando un poco me acordé de algo suprémamente importante, cuando se crea un perfil no sólo se le establecen estas ubicaciones sino que además sele asigna una plantilla que tiene toda la configuración a nivel de usuario, es decir a NTUSER.DAT, además de otros archivos que pemanecen ocultos y que no se podían crear tan fácilmente, esto dio luz a mi solución.

La esperada Solución

No me iba a quedar con las ganas de que la ubicación de perfil se referenciara a la unidad E:\ que era donde la requería para las pruebas que estaba realizando.

Estos son los pasos de cómo conseguí entonces solucionarlo a la medida:

1. Navegué hasta la clave que referenciaba mi perfil de usuario debajo de la clave ProfileList:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-817817061-500146855-1629396408-1003

*Nota: El SID pueden saberlo viendo algun proceso con Process Monitor en la pestaña Seguridad, aunque también pueden ir hasta la ubicación HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\

Allí buscar entre todos los SID cuál corresponde a su usuario.

2. Hice doble clic en el valor ProfileImagePath y cambié la ruta de C:\Users\Demo a la que originalmente quería: E:\Users\Demo

PE15

3. Como sabía que dejándolo así iba a tener otra vez el famoso problema de los perfiles temporales, había que darle a Windows lo que estaba buscando (La verdadera carpeta “Demo” que tenía todos los archivos referentes a mi perfil como NTUSER.DAT propio) así que inicié sesión con otro usuario que tuviera privilegios,  fui hasta C:\Users copié la carpeta “Demo” desde el Explorador de Windows hasta la carpeta “Demo” de mi ubicación en E:\

image

Básicamente, para remplazar todo el contenido vacío de Demo en la unidad E:\ por el originario del perfil de usuario.

El resultado final de mi carpeta en E:\ sería similar a este:

image

4. Reinicié el equipo, inicié sesión con el usuario Demo y ahora felizmente cargaba el perfil como siempre lo había hecho y además estaba ahora apuntando a donde yo había querido desde el principio.

¡Problema solucionado! Smile

*Nota: La verdadera solución realmente es asegurarse de que el valor ProfileImagePath esté apuntando a donde se creó la carpeta de Perfil originalmente, el valor de ProfilesDirectory en la clave ProfileList puede asegurar con certeza dónde se están guardando los perfiles de usuario, una vez identificada la ruta de la carpeta del perfil se debe hacer referencia completa a ella y así Windows dispondrá de todo lo que requiere para cargar y mostrar el perfil.

Mover estas carpetas de Perfiles de usuario no es una muy buena práctica completa, siempre es mejor dejarlos en C:\Users\ y así también estar seguros de que estos valores apuntan a su respectivo perfil para que este tipo de problemas no suceda.

Si este problema les llega a pasar a nivel de Dominio y tienen redirección de carpetas o de Perfiles de algun modo con gran seguridad siempre Windows estará buscando una carpeta de perfil donde no existe así que se deben asegurar de que sepa dónde está.

Como vieron además, vuelvo a decir que Windows es demasiado inteligente porque él mismo al saber dónde tenía el perfil verdadero borró y hizo uso del perfil temporal más.

Espero les pueda ser de utilidad y pueda haber podido lo poco que pude aprender de esto.

Saludos,

Checho

Posted: 10/10/2011 14:11 por Checho | con 1 comment(s)
Comparte este post:

Comentarios

Checho's Blog ha opinado:

Hola a todos, Varias cosas hemos estado viendo con respecto al comportamiento de los perfiles en Windows

# October 19, 2011 10:43 PM