15 octubre, 2012

Renombrar o borrar perfiles locales de usuarios de dominio en Windows 7

Empezamos por decir a groso modo que; cuentas de usuario y perfiles de usuario NO es lo mismo, ya que la cuenta vamos a decir y/o entender de algún modo que son las credenciales del usuario y el perfil el contenido en un equipo de este.
En este caso me centro en los perfiles locales creados por el inicio de sesión de usuarios de Active Directory con cuentas de usuario de dominio.

Perfiles dañados:


En algunos casos ocurre que los perfiles locales de alguna cuenta de usuario de dominio o locales pueden estar afectando al mal funcionamiento de este; ya sea por alguna aplicación, por corromperse los ficheros de referencia en el registro de este usuario (los ficheros NTUSER, que hacen referencia a los parámetros o preferencias del usuario en el sistema) o simplemente por fallos que solo ocurren con dicho usuario en un equipo concreto.
Un fallo muy habitual en usuarios de dominio por lo que tengo comprobado es encontrarnos con el siguiente aviso cuando iniciamos sesión de usuario: "Error en el inicio de sesión del servicio de perfil de usuario".

Cuando estos perfiles se corrompen, pueden hacerlo sin más y quedar tal cual están o puede darse el caso en el que cada vez que iniciemos sesión con el perfil de usuario dañado este no cargue bien el perfil y se inicie de "modo temporal", esto lo que hará es que si el perfil original se llama "Pepe", no iniciará como Pepe, si no que lo hará a través de un "Temp" la cual es una carpeta creada en la que podremos verla en 'Documents and Senttings' (WinXP) o 'Usuarios' (WinVista/7).
Esta carpeta representa la instancia actual de sesión iniciada del perfil que se quiso iniciar pero por causa de estar dañado generó un perfil temporal. Este perfil NO almacena ninguna información ni de configuración ni de datos relacionada con el perfil original afectado. Por lo que, de entrada nos sorprenderemos si pensábamos que habíamos perdido los datos de nuestro sistema!, pero no es así.

Independientemente de si se genera una carpeta temporal 'Temp' o no. Puede darse también el caso, de que se genere una carpeta del estilo: NombreUsuario.NombreEquipo. Suponiendo que mi equipo se llama "PC-Portatil" y cogiendo el ejemplo anterior, mi usuario es "Pepe", quedaría algo tal que así: Pepe.PC-Portatil, esto es muy típico verlo en entornos de equipos unidos a un dominio, equipos corporativos. Ya que al fallar la autentificación o simplemente que no carguen de manera adecuada ciertos servicios de red-dominio en el usuario de dominio a conectarse, Windows genera un perfil con el nombre de ese usuario de forma local. O si no, formamos parte de un equipo de dominio y nos ocurre esto, es por que al igual que el anterior caso del perfil temporal, este lo genera de este modo.

Renombrar o borrar perfiles dañados o corruptos:


En Windows XP esto era una tarea fácil, ya que solo bastaba con renombrar el perfil del usuario. Por ejemplo, si el usuario es "PEPE" podrías renombrar con "_PEPE" y listo. Al iniciar sesión de nuevo con este usuario se generaría un nuevo perfil "PEPE" cogido de la referencia del perfil "Default User".

Pues en Windows 7 esto no funciona de igual modo, en este caso a parte de hacer lo anterior (renombrar manualmente el perfil) también necesitamos modificar el registro de Windows, eliminando ciertas subclaves que hacen referencia al perfil local de usuario en el sistema. Esto es si lo queremos hacer de forma manual.

Aunque existe una tool recomendada por Microsoft para realizar borrados de perfiles la cual se interactúa mediante consola de comandos llamada Delprof, el cual podemos consultar sus parámetros y modo de empleo en la ayuda del comando (delprof /?) o en la propia descarga se nos adjunta un fichero mht de ayuda.

Pero lo que miraremos es como hacerlo de forma manual:

Para ello nos iríamos a la path que contiene la lista de perfiles actuales en el sistema:
HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ProfileList
Esta clave contiene diferentes subclaves por cada perfil de usuario, donde su nombre apunta a un SID (Security IDentifier) de la cuenta.
El valor de ProfileImagePath es la ruta de NTUSER.DAT para ese perfil de usuario. ProfileList no contiene un valor a la sección SID_Classes, sin embargo HKLM\SYSTEM\CurentControlSet\Control\hivelist contiene un valor por cada sección en HKLM y HKU que el sistema está actualmente utilizando. La diferencia entre los valores ProfileList y HiveList son en que:

- ProfileList: Contiene una lista de todos los perfiles de usuario de los que Windows tiene constancia de su existencia.
- HiveList: Contiene una lista de todas las secciones actualmente cargadas.

Lo que tendremos que hacer después de renombrar o eliminar la carpeta del perfil de usuario es eliminar la subclave entera del registro que apunta a dicho perfil. De modo que al iniciar sesión de nuevo en el equipo este vuelva a cargar las configuraciones del usuario y cree valores por defecto del perfil de referencia "Default User" y genere un nuevo SID para este usuario y que así vuelva apuntar a este de forma correcta.

También podremos eliminar el perfil a través de la opción "correcta" que nos ofrece Windows en: "Ejecutar -> sysdm.cpl" (Equipo -> Propiedades -> Configuración avanzada del sistema) -> Opciones avanzadas -> Perfiles de usuario -> Configuración -> Seleccionamos el perfil afectado -> Eliminar.

En el caso de NO ver claramente el nombre del perfil afectado, nos podremos encontrar algo como "Cuenta desconocida", esto ocurre por lo hablado anteriormente donde comentaba los "Perfiles dañados".

Si solo nos aparece una de estas cuentas la eliminamos sin piedad, si vemos más cuentas de este estilo, podemos eliminarlas igualmente ya que deben ser cuentas dañadas en un pasado, o si queremos dejarlas "por si a caso" y solo borrar el perfil dañado actual, podemos fijarnos en la "fecha de modificación" o el "tamaño del perfil" como referencia.

Antes mencionaba que esta sería la opción correcta de borrar un perfil. Por qué?.
Porqué Windows lo que hace es eliminar la carpeta de perfil y el SID del registro en un mismo paso, EXCEPTO el nombre de cuenta de usuario lo podemos ver en: (Ejecutar -> lusrmgr.msc).

Personalmente si todo está bien, los borro de este último modo, pero si los perfiles están corruptos prefiero hacerlo todo de manera manual.

Si la carpeta del perfil ya está borrada y simplemente se nos crea un TEMP cuando iniciamos con el usuario afectado, entrando en el registro de Windows vemos que aparece un SID con la terminación .bak lo que haremos será renombrar ese SID, QUITANDO esa extensión .bak. Quedando solo la clave con el identificador a mostrar.

Nos fijaremos al entrar en cada clave el valor del "ProfileImagePath", este nos mostrará el usuario relacionado con ese SID.

Figura 1: Eliminando SID de usuario con problemas del registro de Windows 7.

Ahora bien, si SOLO vemos una carpeta con el SID de usuario y SOLO ese SID tiene un .bak al final y no hay ningún otro TEMP, ni ningún SID del mismo usuario duplicado, simplemente nos bastaría con poner a 0 los contadores. Estos contadores son valores del registro de esa clave en en ese SID en cuestión.

Podríamos a "0" los valores: RefCount y State.

Más info. de este último caso: http://support.microsoft.com/kb/947215/es

Con esto solucionaremos la mayoría de problemas de este tipo y estaremos renombrando perfiles locales de usuarios de cuentas de dominio de la manera que yo conozco más adecuada y fiable.

Añado otra forma de BORRAR perfiles de usuario de DOMINIO de forma más gráfica.

Esto SOLO BORRAR (no renombrar), según "lo aconseja Microsfot" y también igualmente válida y "limpia", es directamente borrar o eliminar un perfil de usuario tanto la carpeta de perfil como la clave de registro SID en ProfileList que apunta a el, esto se puede hacer directamente desde las propiedades de sistema (sysdm.cpl), en la pestaña de Opciones avanzadas > Configuración... 

Figura 2: Configuración para perfiles de usuario en: Opciones avanzadas de propiedades del sistema.

Una vez situados aquí, podremos seleccionar el perfil afectado y directamente eliminarlo. Esto hará que se borre completamente la carpeta de usuario creada en el sistema así como la clave de registro SID que apunta a el.

Aclaro que, lo que si NO BORRARÁ será la cuenta LOCAL (en el caso de que sea local y no de dominio) de usuario creada (podemos verla en lusrmgr.msc) y digo cuenta de usuario, no perfil de usuario.

Lo cual esto dependerá de si lo queremos borrar definitivamente tendríamos que borrar también la cuenta a parte, o si solo queremos eliminar el perfil y volver iniciar sesión con dicho usuario local creado, de forma que se solucione algún problema en concreto.

Figura 3: Eliminación de la carpeta local del perfil + SID de ProfileList del registro de Windows.

Por último decir que esta última opción en ocasiones (en un pequeño porcentaje), no funciona correctamente ya que nos puede saltar algún tipo de error en la eliminación de perfil, en ese caso lo haremos de forma manual como expliqué más arriba de este artículo.

Espero que tanto la solución manual como esta última, la más gráfica, las dos propuestas por Microsoft, sea de utilidad a muchos para realizar esta tarea.

Saludos!

24 comentarios:

  1. Hola, tengo un problema lo que pasa es que borre todos los usuarios en Equipo\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion, y no me deja crear nuevos usuarios ni dandole en opciones avanzadas ni asignando control total en los usuarios que trato de agregar, por ejemplo en la ventana de opciones avanzadas donde dice Auditoria sale un mensaje que dice: No tiene permiso para ver ni editar la configuracion de auditoria de este objeto. Te pido ayuda ya que al borrar esos permisos no puedo acceder al inicio en la barra de tareas ni a configuraciones del equipo

    ResponderEliminar
  2. Hola @Jorge,

    La ruta del registro que me indicas está incompleta? no entiendo muy bien la situación que me comentas.
    Pero puedo entender que finalmente perdiste permisos de administrador en tu equipo local y ahora no puedes realizar ciertas funciones de elevados privilegios?.
    De ser así, te recomiendo entonces restablecer la password de administrador o crear un usuario del grupo administradores y a partir de ahí ir ajustando, te dejo una entrada de como hacer esto.

    http://www.zonasystem.com/2011/07/generar-o-restablecer-la-password-o.html

    Saludos!

    ResponderEliminar
  3. hola me paso lo mismo pero me equiboque y antes de renombrar borre el .bak que puedo hacer?

    ResponderEliminar
  4. No hay problema si borraste unicamente el .bak. Tienes que buscar si existe otro SID igual que ese .bak (sin el .bak) y eliminarlo también.
    Después en la carpeta de perfiles de usuarios locales, buscas el usuario relacionado con ese SID y aquí tienes varias opciones:
    - Recuperar los datos que deseas y borrar directamente la carpeta.
    - Renombrar la carpeta simplemente con una barra baja "_" por ejemplo al principio del nombre.

    Y cualquiera de los dos casos anteriores volver a iniciar sesión para que el sistema genere una nueva y a su vez automáticamente generará un nuevo SID asociado a la carpeta de perfil para ese usuario.

    Saludos!

    ResponderEliminar
  5. en mi caso borre la cuenta del AD, y se mantuvo el perfil creado en el equipo de la red, cree la cuenta nuevamente en ad, y cuando intento iniciar seccion en ese equipo me crea otro perfil, lo que quiero es iniciar seccion sin que se me pierda nada

    ResponderEliminar
  6. Hola @rbandez, lo que comentas es un funcionamiento lógico y normal para el sistema.
    Lo que debes hacer es copiar aquellas carpetas con la información del perfil local o del perfil en red y hacer backup de ellas.
    Después eliminas tanto el perfil local como el puntero del registro que comento en el artículo. Una vez hecho esto inicias sesión de nuevo en ese equipo con la cuenta de usuario del AD y se generará un perfil nuevo a partir del DefaultUser, solo quedará copiar y reemplazar las carpetas que querías mantener, que suelen ser si se trata de un entorno corporativo: Desktop, Downloads, Favorites y poco más, puede darse el caso de recuperar alguna configuración muy espécifica en la %appdata% del usuario de algún software de terceros, si se diese el caso.

    Pero en el AD no tendrías que tocar nada. Hay que distinguir entre una cuenta de usuario y un perfil de usuario.

    Saludos!

    ResponderEliminar
  7. Tengo un problema y es que cuando entré finalmente a ProfileList sólo me aparece un perfil que dice .../TEMP.MELINA y no tiene la extensión .bak, es decir, no puedo quitar ninguna extensión y mi perfil original no existe! Por favor, ayúdenme!

    ResponderEliminar
  8. Hola @Melina, no tiene por que tener extensión .bak, simplemente comprueba que en el registro profilelist no esté nada vinculado a tu cuenta de usuario, de ser así, elimínalo directamente sin renombrar nada.
    Los datos de tu cuenta están en tu perfil, es decir en tu carpeta local de tu cuenta (c:\users\melina) haz copia de ese carpeta a un pendrive u otra unidad extraible. Una vez tengas la copia hecha, elimina dicha carpeta sin más, tienes que eliminarla desde otro usuario no desde el mismo usuario (que sería el tuyo: melina), crea un usuario nuevo dentro del grupo de administradores para que tenga permisos para realizar esta acción. Y nuevamente vuelve a iniciar sesión con tu cuenta personal, elimina el usuario creado anteriormente para dejar todo como estaba y vete restaurando el contenido de la carpeta a la nueva carpeta que se te crearía.

    Un saludo.

    ResponderEliminar
  9. Hola, hago una consulta. ¿Hay alguna manera de borrar los datos de conexion de unidades de red en el perfil local de usuario?. Cuento la situación: en mi red tengo dado de alta a cada usuario con su propio script de inicio de sesión, donde se mapean las unidades de red a las que acceden. A medida que pasa el tiempo, a algunos usuarios se les agregó unidades de red, pero desde el equipo local (conectar a unidades de red) sin corregir el script de inicio de sesión. Luego, si por alguna razón se modifica la ruta de alguna unidad en el script de inicio de sesión, ese cambio no es tomado y entonces se mapea a lo que esta guardado en el perfil local del usuario en el equipo (si el usuario va a otro equipo, donde nunca haya iniciado sesión, entonces si se toma bien). El asunto es que debería encontrar la manera de limpiar esa información (de conexión a unidades de red) del perfil local para que siempre las tome desde el script de inicio de sesión. ¿Alguien conoce como hacer esto?

    ResponderEliminar
  10. Hola @Jorge, no lo puedo testear ahora mismo.

    Pero prueba a modificar el script principal que se inicia en cada sesión de usuario y que este llame a otro script (o al mismo dependiendo como lo estructures) para que al cerrar sesión (script para el logoff de sesión) este desconecte las unidades a las que está conectados.
    Prueba lo siguiente del tipo.
    Si no asigna letra de unidad:
    net use \\IP_SERVER\carpeta /delete

    Si tiene letra de unidad asignada:
    net use z: /delete

    Algo más sencillo y que se puede considerar procedente es que en el cierre de sessión se elimine todo el contenido que hubiera dentro de la clave de registro del usuairo actual:
    HKEY_CURRENT_USER\Network\"ELIMINAR_TODO_LAS_CARPETAS"

    En script en batch:
    @echo off
    reg delete HKEY_CURRENT_USER\Network\* /f

    No puedo comprobar si la sintaxis es del todo correcta, pero vete probando.

    Ya me contarás, un saludo.

    ResponderEliminar
  11. Gracias por la respuesta.
    Apliqué la opción de editar el registro (HKEY_CURRENT_USER\Network\"ELIMINAR_TODO_LAS_CARPETAS") y reinicié.
    Pero curiosamente, no se ejecuta el script de inicio que está seteado en el AD, es decir que no se mapeó ninguna de las unidades de red.
    Al chequear el registro con regedit, no están definidas ninguna de las unidades.
    ¿Tenés idea que pueda estar sucediendo?

    ResponderEliminar
  12. Hola @Jorge, pero te funcionó lo de borrarlas? Lo del script que me comentas no lo entendí exactamente, te refieres a que ahora no te las está mapeando después de borrarlas??.

    ResponderEliminar
  13. Hola Adrián.
    Perdón, no me expresé correctamente. Cuando limpié la clave del registro, las unidades de red se borraron de la sesión del usuario. Y al reiniciar la máquina, con la id del usuario en cuestión, no toma el script de inicio y, por lo tanto, no mapea ninguna de las unidades que están con el net use en ese script.
    Espero haber sido más claro.
    Gracias por anticipado.

    ResponderEliminar
  14. @Jorge, Ok pero ese script tiene alguna función a mayores a parte del net use? sabes si hace las otras configuraciones y la que no está haciendo es la del net use únicamente?, lo acabo de probar manualmente, sin reiniciar la máquina solo cerrando la sesión del usuario actual y funciona correctamente. Puede que esté fallando algo en el script? imagino que la carpeta \networks no la eliminaste. Puedes probar a modificar el script y en vez de cargar las unidades por medio de net use las carge por añadiendo al regedit las claves correspondientes, es un poco más "largo" el proceso de scripting, pero puede que sea más eficiente. Ya me contarás.

    Un saludo.

    ResponderEliminar
  15. Hola Adrián.
    Justo iba a probar tu sugerencia, pero me encuentro con que desconozco como completar la línea del comando. Llegué hasta:
    REG ADD HKEY_CURRENT_USER\Network\.............. pero no se como continuar. Lo que encontré en internet n me aclara el panorama.
    Cómo sería el comando si yo quiero, por ejemplo, conectar a la unidad J: el volumen CONTABILIDAD del servidor servdatos?, siendo CONTABILIDAD un subdirectorio de C: de la máquina servdatos (aunque también puedo ponerlo como recurso compartido).

    ResponderEliminar
  16. Hola de nuevo @Jorge, para simplificar, te voy dejar unas guías útiles y ya vas tirando info de ahí.

    Puedes hacer todo el proceso en el mismo archivo por lotes .bat. Aunque también puedes hacerlo en un fichero .reg (te será más fácil y más fácil encontrar errores y añadir/modificar esto por separado en un futuro).
    Para hacerlo en dos archivos. Primero hacer el .reg y después desde el .bat que ya tienes haces la llamada a este fichero .reg, ubicado en el mismo sitio que donde está el .bat, de no ser así habría que especificarle la ruta.
    La línea para llamar al fichero .reg desde un fichero .bat sería:
    regedit /s "UbicacionYNombreDel.reg"

    Las guías oficiales de Microsoft para poder agregar valores y de más y con ejemplos, serían las siguientes.

    Para .reg
    https://support.microsoft.com/es-es/help/310516/how-to-add,-modify,-or-delete-registry-subkeys-and-values-by-using-a-.reg-file

    Para agregar unidades de red en consola, integrado en un .bat por ejemplo.
    https://technet.microsoft.com/es-es/library/gg651155(v=ws.10).aspx

    Saludos!

    ResponderEliminar
  17. buena tarde como entro al regedit a borrar un .bak de profile list de un perfil de outlook que renombre porque era muy lento el ingreso, y luego de borrarlo entro de nuevo al perfil y copio todos los documentos del renombrado gracia

    ResponderEliminar
  18. @centro de servicios, una cosa son los perfiles de usuarios locales del sistema y otra son los perfiles de Outlook. Los usuarios locales en su AppData de su perfil, tienen ficheros de Outlook. Le aconsejo leer el siguiente artículo: https://support.office.com/es-es/article/Ubicar-los-archivos-de-datos-de-Outlook-0996ece3-57c6-49bc-977b-0d1892e2aacc

    Y de forma gráfica como copiar e importar dichos perfiles: https://support.microsoft.com/es-es/help/829918/how-to-create-profile-and-set-up-an-e-mail-account-in-outlook

    En cualquiera caso, si ya borró un perfil sin haber hecho copia antes, eso ya no se podría recuperar.

    Como ya dije, este artículo hace referencia a perfiles locales de usuarios de Windows o usuarios de dominio en el que se crean perfiles locales.

    Saludos.

    ResponderEliminar
  19. Hola buenas,

    Mi situación es la siguiente: Tenia un dominio que no funcionaba bien, lo cambié y cree los mismos usuarios, en uno de los PCs al hacer el cambio de dominio e intentar iniciar sesión con el mismo usuario (mismas credenciales pero en el nuevo dominio) me salió el error que tu explicas como solucionar.
    La cuestión es que yo no puedo solucionarlo, ya que en el regedit no me aparecía ninguna clave con .bak al final, aún así seguí tus pasos de borrar correctamente los rastros del antiguo perfil pero nada.
    Ahora me encuentro en la situación de que en el perfin de usuario y en el regedit me aparecen dos usuarios, el admin local y el de dominio (puedo iniciar sesión con los dos mencionados).

    Muchas gracias de antemano.

    ResponderEliminar
  20. Hola @Iván Moya, Los .bak no tienen por que aparecer en el registro aunque tengas problemas con los perfiles.

    En la situación actual que comentas, el admin del equipo local será con el SID 500 (siempre y cuando el usuarios administrador local esté habilitado, por defecto no lo está). Y el admin de dominio se generará como cualquier otro usuario con un perfil local. Si puedes iniciar sesión con ambos estos usuarios están correctos para ese equipo local.

    Cuando inicies sesión con un usuario de dominio recuerda en especificar dominio\usuario en la pantalla de login y después la contraseña del usuario de dominio. ¿Quizás venga por ahí lo que me comentas si mal no entendí?

    Saludos.

    ResponderEliminar
  21. Buenos días Adrián, gracias por tu respuesta.
    Efectivamente he probado de hacer login con dominio\usuario y la contraseña correcta con varios usuarios de dominio y no consigo entrar.
    ¿No hay otra posible causa o solución?

    ResponderEliminar
    Respuestas
    1. Cuando fallo el inicio de sesión. Que mensaje te muestra?

      Eliminar
  22. Buen día, muy buena información la que compartes. Tengo una duda respecto a perfiles locales. Trabajo como helpdesk en una empresa, y el día de ayer se salio uno de nuestros compañeros, lo dimos de baja como siempre damos de baja a alguien en el Active Directory, sin embargo su cuenta sigue funcionando como administrador en el dominio de uno de nuestros clientes. Ya busqué la cuenta como usuario local y no aparece en ciertos lugares, pero sigue funcionando. Al momento de buscar la cuenta como local en registro sí aparece, pero en computer management no aparece, no tengo forma de eliminar el usuario y aunque ya reestablecimos su cuenta de AD, ya no funciona la de AD, pero la local sigue trabajando y como es Administrador tenemos problemas con que quede ahí. No sé si me explique pero ya hice de todo (borré entradas de registro, gp update, etc).

    ResponderEliminar
    Respuestas
    1. Hola Tyler,

      Se trata de un equipo final en producción o de un equipo servidor?.

      Es curioso, si es un usuario de dominio, y se da de baja la cuenta de este usuario en AD se tendrían que eliminar también de los grupos a los que pertenece. Se me ocurre que puede estar heredando de algún sitio a otro en ciertos grupos el SID de ese usuario y solo para esa máquina. Si formateas dicha máquina se solucionaría, si se trata de un equipo servidor pues habría que tomar otra alternativa. Ya que me parece que puede ser problema de la máquina en si. Y no de AD.

      Saludos,

      Eliminar

Entradas Relacionadas