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

La perdida de asociación de accesos directos y ejecutables en Windows 7. Process Monitor, Process Explorer, PsExec y su solución.

Hola,

En artículos anteriores ya hemos visto problemas relacionados con Asociación de iconos en Windows 7 o Asociación de Carpetas y Directorios pero, Windows maneja internamente distintos tipos de asociación y aun nos falta la de archivos o extensiones en general pues están implicadas diferentes claves o subclaves de Registro.

En este post exploraremos uno de los problemas más frecuentes con respecto a la Asociación de archivos que se refieren a los Accesos directos (.lnk), Ejecutables (.exe) y diferentes formas de solucionar el inconveniente que van desde la más fácil hasta la que se vuelve un poco más compleja acudiendo a Sysinternals.

*Nota: El Artículo puede estar extenso por lo que se planteará cada solución al detalle posible, la idea es que puedan encontrar diferentes caminos para solventar el problema.

El problema

Cada aplicación que se instala en Windows puede manejar un tipo de extensión de archivo propia para identificar que los archivos se ejecutan y trabajan con esa aplicación, por ejemplo la extensión PDF es propia de Adobe Reader aunque la extensión puede estar dentro de un estándar general para que otras aplicaciones también puedan administrar estos archivos como la misma .PDF o por ejemplo .ISO

Cuando se instala el Software, automaticamente toma posesión de sus extensiones pero, Windows puede cambiar este comportamiento para nosotros decidir con qué aplicación queremos abrir el archivo determinado. El problema está cuando por accidente o desconocimiento cambiamos una extensión que administra Windows por ejemplo o que es desconocida para la áplicación como la de los Accesos directos (.lnk).

El resultado será entonces que los iconos cambian al de la aplicación seleccionada y además todo lo que tenga esa extensión .lnk intentará abrirlo sin resultado.

Si por ejemplo, afectamos la asociación de accesos directos (.lnk) para que se abra con Windows Media Player, podremos tener una visualización de nustros accesos así:

image image

Al ejecutar el archivo, a menos de que sea de tipo audio o video (Para este caso), recibiremos un mensaje de error que nos indica que no se puede reproducir esa extensión:

image

“El archivo seleccionado tiena una extensión (.lnk) que <Aplicación> no reconoce”

La causa

El primer paso si no se sabe qué está sucediendo sería recurrir a Process Monitor de Sysinternals y a continuación comparar el comportamiento de un equipo que esté funcional con respecto al equipo del problema cuando se trata de abrir el Acceso directo.

Analizando con calma, podemos ver una gran diferencia en una operación relacionada con la clave de Registro: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk\UserChoice

Equipo Funcional:

LNK2

Equipo NO Funcional:

LNK1

Como ven, en el Equipo funcional trata de abrir la clave de registro HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk\UserChoice, al obtener como resultado NAME NOT FOUND (La clave no existe) procede a cerrarla, mientras que en el equipo NO funcional, a parte de que sí obtiene un resultado exitoso indicado con SUCCESS (La clave existe) hace una consulta a una de las subclaves “Progid” también con un resultado exitoso y finalmente cierra la operación.

En definitiva, esta clave tiene que ver con el problema, si vamos más a fondo con el Process Monitor haciendo clic derecho y Jump To para abrir el registro, la agradable sorpresa sobre el valor “Progid” es:

image

Progid (Identificador de aplicación) es el valor que se encarga de asociar la aplicación que se haya seleccionado accidental o no accidentalmente (UserChoice) por el usuario para que abra esas extensiones, en este caso la de los Accesos directos.

Para este artículo, el afectado fue el Windows Media Player (wmplayer.exe).

*Nota 1: La clave implicada será la misma, lo unico que variará para cada persona con el problema será el programa asociado.

*Nota 2: Este tipo de problemas por lo general afectan sólo por configuración de usuario, por eso están ubicados en la ruta de HKEY_CURRENT_USER (HKCU)

Primera solución – Para accesos directos (.lnk) -

Si sólo tenemos afectados los Accesos directos, el procedimiento para volver a las asociaciones funcionales y originales es:

- En el Equipo NO funcional, clic en el botón Inicio, teclear Regedit y sobre el resultado, clic derecho y Ejecutar como Administrador:

image

- En el Registro de Windows, navegar hasta la clave:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk

image

- Expandimos la clave .lnk (>), clic derecho sobre la subclave UserChoice y seleccionamos Eliminar:

image

- Después de eliminar la subclave, reiniciamos el sistema y los Accesos directos deberían estar funcionales nuevamente.

El problema extendido – Con perdida de asociacion de ejecutables (.exe)-

Recordemos que cuando algo está mal, ¡Se puede poner mucho peor!
Para este caso, se da mucho que al perder la asociación de los Accesos directos también se pierde la de los ejecutables (.exe) y es ahí cuando surgen preguntas como ¿Y cómo entro al Registro si no puedo abrir ningun ejecutable? ¿Cómo lo soluciono?

image

De lo que podemos estar en la mayoría de las ocasiones seguros es de que la causa no cambia, y en términos generales la solución tampoco ya que, se trata de eliminar la asociación que sea crea en el registro pero además de la de accesos directos diriginos a la de ejecutables que está ubicada en:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exe

El problema ya mencionado por supuesto, es que al estar afectada la asociación de ejecutables (.exe) no se puede entrar ni siquiera al Registro de Windows – Recordemos que es Regedit.exe-

La solución extendida – Para Accesos directos (.lnk) y Ejecutables (.exe)-

No todo está perdido y es que si en la solución anterior aprovechamos el buen estado de la asociación de ejecutables para arreglar la de accesos directos, en este caso aprovecharemos la asociación de la que quizás sea una de las mejores herramientas que integra Windows: El blog de Notas (Notepad) en conjunto con los archivos de registro (.reg).

Si bien también es un ejecutable (Notepad.exe), para crear un archivo de texto plano no es necesario invocar a la aplicación, aprovecharemos esto entonces para generar una clave de registro desde el texto plano (Cambiando a extensión .Reg) para borrar las claves de registro implicadas en el problema (Aunque suene un poco contradictorio).

¿Cómo hacerlo?

- Sobre el Escritorio o cualquier directorio de preferencia del equipo NO funcional hacemos clic derecho y seleccionamos Nuevo > Documento de texto

image


*Nota:

La estructura general de un archivo de Registro se compone de la siguiente forma:

versiónEditorRegistro
línea en blanco
[rutaRegistro1]
"nombreDato1"="tipoDatos1:valorDatos1"
nombreDato2"="tipoDatos2:valorDatos2"
línea en blanco
[rutaRegistro2]
"nombreDato3"="tipoDatos3:valorDatos3"

Por ejemplo, si quisieramos crear una nueva clave llamada “Demo” dentro de HKEY_CURRENT_USER teniendo en cuenta la versión del Registro en Windows 7 y la ruta, quedaría así:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Demo]

Se guarda con el nombre que se quiera y la extensión .REG y al ejecutarlo e importarlo la clave quedará creada.

Así mismo, como se puede crear generando la clave, se puede eliminar claves, subclaves y valores, sólo se debe anteponer el signo de menos (-) dependiendo de lo que se quiera quitar.

Por ejemplo, si quisiera quitar la Clave que acabé de crear previamente “Demo” dentro de la rama de registro HKEY_CURRENT_USER quedaría así:

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Demo]

Igualmente, se guardaría con extensión .REG y al ejecutarlo e importarlo ya no existiría esa clave den el Registro de Windows.


En este orden de ideas, para eliminar la clave que nos está generando el problema en las dos asociaciones (.lnk y .exe) debemos agregar el signo de menos (-) antes de toda la clave correspondiente, como podemos de una vez integrar las dos ejecuciones en un mismo archivo, nuestro Blog de notas tendría que quedar así:

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk\UserChoice]

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exe\UserChoice]

image

Ahora, clic en Archivo, Guardar como, le pones cualquier nombre y no podemos olvidar la extensión .REG, para este artículo yo le puse FixLNKEXE.REG:

image

image

*Nota: Si no se le pone el signo de menos (-), lo que hará es crear otra vez la clave de registro (Cosa que no nos servirá).

Si desean, pueden descargar el Fichero de Registro que realiza esta operación (Eliminar las claves afectadas) desde aquí:

*Nota: Este fichero de registro es válido para reparar el problema con sólo una de las dos asociaciones afectadas también, por ejemplo la de Accesos directos (.lnk) por lo que lo pueden descargar y ejecutar en vez de seguir la solución manual documentada anteriormente.

Al ejecutar el fichero, importarlo y reiniciar o cerrar sesión en el equipo, los iconos y las aplicaciones deberían volver a su estado funcional nuevamente.

El problema en el peor de los casos

Por lo general, este problema no llega hasta este punto pero por supuesto ¡Se puede dar! y, ¿Cuál es el peor de los casos?

¿Qué sucede si además de los Accesos directos (.lnk) y los Ejecutables (.exe) ni siquiera la extensión de Texto plano (.txt) y de Registro (.reg) están funcionales?

image

Para este punto, así se afecte uno de los dos (txt ó reg) ya se vuelve algo bastante complejo de solucionar y de hecho desde la cuenta de usuario afectada ya no se podría y es ahí cuando uno podría en primera instancia pensar en restaurar sistema o hasta reinstalar Windows.

Afortunadamente, como comenté en el principio del artículo, el fallo de asociación en la mayoría de las ocasiones afecta por perfil sólamente, es decir en la rama de registro que cada usuario nuevo creado tiene con configuraciones únicas (HKEY_CURRENT_USER).

Lo que indica esto es que en la mayoría de las veces, creando o accediendo a otra cuenta local, podremos tener acceso a la funcionalidad que debe tener Windows para abrir estos tipos de archivos.

Esto sin embargo, no significa que ya nos resignemos y pasemos todo para la nueva cuenta, significa que podremos hacer uso de esta ventaja para acceder y reparar el registro de otro usuario local.

Aquí es donde finalmente damos paso a Sysinternals, específicamente PsExec.

La solución para el peor de los casos

PsExec nos permite básicamente ejecutar procesos y aplicaciones de forma remota en otros equipos o hasta en otras cuentas de usuario locales, lo interesante es que es portable y no es necesario instalar ni realizar configuraciones adicionales, sólo ejecutar y trabajar!

*Nota: PsExec requiere específicamente entregarle credenciales para darle los permisos de ejecución de acuerdo a la tarea que se vaya a realizar.

Volviendo al caso…

Como desde la cuenta NO funcional ya no se puede hacer nada más, debemos Cambiar de usuario e iniciar con otra cuenta que pertenezca al Grupo de Administradores en modo Aprobación de administrador.

Lo que haremos es ingresar al Registro en la rama HKEY_CURRENT_USER pero equivalente al usuario no funcional (De nuevo recordemos que el HKCU varía por usuario) y eliminar las claves de UserChoice en todas la extensiones afectadas.

En realidad, a parte del PsExec, hay otra forma para realizarlo directamente desde Windows por lo que a manera de conocimiento, explicaré las dos aunque enfatizando y recomendando que es mucho más fácil proceder directamente con PsExec.

Forma manual:

Entre todas las ramas que existen en el Registro, hay una específica que contiene la de HKEY_CURRENT_USER entre otras por usuario, específicamente la rama de HKEY_USERS, el problema es que la identificación por usuario lo hace con el SID (Identificador único de usuario) por lo que a simple vista sería complicado determinar cuál es la del perfil que necesitamos arreglar:

image

¿Cómo identificar entonces el SID que pertenece a nuestra cuenta afectada?

¡Aquí es donde entra Process Explorer de Sysinternals!

Como hicimos cambio de usuario (Si no fue así, entren a la cuenta afectada y hacen clic en Inicio, clic en la flecha del botón apagar y Cambiar de usuario) los procesos que están activos en la cuenta NO funcional se visualizarán en Process Monitor, si no habían procesos abiertos, siempre se visualizará el proceso padre: Explorer.exe.

Como predeterminadamente, el usuario al que pertenece no se visualiza debemos hacer clic en el menú View y Select Columns:

image

 

 

 

 

 

 

 

 

 

 

En la ventana de Select Columns en la pestaña de Process Image debemos seleccionar User Name para poder ver esta información y clic en Aceptar para que se visualice en Process Explorer:

image

Ahora, en Process Explorer podremos ver en cuál de los dos procesos de Explorer.exe corresponde al usuario afectado con la columna de User Name:

image

Hacemos doble clic sobre el proceso y nos abrirá la ventana de Propiedades, allí nos pasamos a la pestaña de Seguridad y podremos ver la información que necesitamos:

image

Como ven, debajo de "User” tenemos el “SID” correspondiente a ese proceso que previamente aseguramos que correspondiera al Explorer.exe del usuario NO funcional, específicamente el SID es: S-1-5-21-1231788061-2787996694-3405420119-1006

Teniendo esto en cuenta, procedemos a solucionar el problema, para esto:

Hacemos clic en Inicio, tecleamos Regedit y sobre el resultado clic derecho y Ejecutar como administrador.

Expandimos la rama de HKEY_USERS y posteriormente expandimos la que corresponde al SID que nos entregó Process Explorer del usuario NO funcional. Pueden haber más de 4 que correspondan con el SID, debemos buscar en la primera.

Una vez hecho esto, símplemente buscamos la Clave que corresponde a cada asociación como si lo estuviéramos haciendo desde el Regedit del usuario en cuestión.

Como hay varias extensiones afectadas, debemos ubicar la clave que contiene todas nuevamente y después empezar a reparar una por una. Recordemos que la clave de Asociación de archivos por usuario está en:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exe

Para este caso, variarían la primera por HKEY_USERS y a continuación el SID, por ejemplo si fuera a buscar por el Acceso directo (.lnk) sería:

HKEY_USERS\S-1-5-21-1231788061-2787996694-3405420119-1006\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk

image

Aquí de nuevo, procedemos por extensión afectada (Por ejemplo .lnk, .exe, .txt, .reg) a borrar la sublcave de UserChoice haciendo clic derecho y Eliminar.

Después de esto, reinciamos el equipo y al entrar de nuevo pero en la cuenta NO funcional, todo debe estar asociado correctamente.

Utilizando PsExec:

Como escribí en la descripción de PsExec, nos permite ejecutar procesos pensandos más para una máquina remota pero como todas las herramientas de Sysinternals tiene sorpresas estupendas y es que también lo puedo utilizar para ejecutar procesos en otras cuentas locales.

Desde aquí pueden descargar PsExec y además ver una descripción directa del autor:
http://technet.microsoft.com/es-es/sysinternals/bb897553

Si no queremos complicarnos más de lo que ya estamos con este problema, debemos cerrar sesión desde la cuenta NO funcional (También se puede cambiar de usuario), a continuación Iniciar sesión con una cuenta que esté en el Grupo de Administradores en modo aprobación de administrador y allí descargar PsExec en el Escritorio o en un Directorio de preferencia.

Hacemos clic en Inicio, tecleamos CMD y sobre el resultado clic derecho y Ejecutar como administrador:

image 
Desde la consola de Comandos debemos situarnos en el directorio donde se haya descargado PsExec utilizando el comando “cd”, por ejemplo, para este artículo que descargué la herramienta en el Escritorio, el comando sería:
cd “C:\Users\Administrador\Desktop” donde “Administrador” es el nombre de usuario de la cuenta que iniciaron sesión y ENTER:

image

Ahora, como PsExec está en este directorio, podremos conectarnos al Regedit del otro usuario NO funcional, para esto utilizaremos este comando:

PsExec –u <UsuarioActual>\<UsuarioNOFuncional> –p <PasswordNOFuncional> –h –i C:\Windows\Regedit.exe

Donde <UsuarioActual> es la cuenta del Grupo de Administradores con la que iniciamos sesión y descargamos PsExec, <UsuarioNOFuncional> es el nombre de la cuenta que tiene el problema de asociación que deseamos corregir, <PasswordNOFuncional> es la contraseña del usuario NO funcional (El del problema), –h es para que haga la elevación del Token de usuario (Por el UAC) con las credenciales que le estamos enviando e –i es para que ejecute el programa con la ventana interactiva del usuario actual (Para que veamos el Regedit corriendo en el usuario Administrador).

Para este caso por ejemplo sería:

PsExec –u Administrador\Demo –p demopass –h –I C:\Windows\Regedit.exe

image

(Hacer clic para ver la captura para verla en tamaño real)

Sin darle mucha importancia al “Acceso denegado”, en unos pocos segundos se debe abrir una ventana de Regedit y para estar seguros de que pertenece al otro usuario NO funcional, podemos abrir Process Explorer, entrar en sus propiedades y ver que tanto el usuario como el SID pertenecen al perfil con problemas:

image

Desde la ventana de Registro ahora ya no tenemos que expandir HKEY_USERS sino que hacemos la búsqueda en la rama de HKEY_CURRENT_USER como si estuviéramos logueados en la cuenta con el problema buscando las claves que originan el problema (Para este artículo por ejemplo .lnk, .exe, .txt, .reg):

image

Aquí, como en todo el artículo, clic derecho sobre la subclave UserChoice y seleccionamos Eliminar, hay que repetir todo esto para cada extensión afectada debajo de la clave:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts

Reiniciamos el sistema, volvemos a iniciar sesión pero desde la cuenta afectada y el problema ahora debería estar resuelto.

¡Todo listo!

La otra posibilidad de que se empeorara el problema es que afectara por máquina y eso sería a nivel de HKEY_CLASSES_ROOT cosa que en realidad ocurre poco.

Espero les sea de utilidad y puedan ayudarse o disfrutar tanto como yo lo hice.

Saludos,


Checho

 

Posted: 18/6/2011 16:25 por Checho | con 19 comment(s)
Comparte este post:

Comentarios

yo ha opinado:

gracias genio me soluciono el problemas

# June 21, 2011 12:30 AM

Checho ha opinado:

¡Gracias por el comentario y me alegra haberte podido ayudar!

# June 21, 2011 6:37 AM

javier ha opinado:

Buenos días!!!!

me parece un manual estupendo, pero tengo un problema, uso xp profesional y estoy en el ultimo punto......desastre total, al intentar iniciar con otro usuario tengo un problema, sólo tengo creado uno y no se como habilitar otro....

muchas gracias por su tiempo

# July 4, 2011 1:00 PM

Checho ha opinado:

Javier, haz clic en Inicio, haces clic en tu imagen de cuenta de usuario y te llevará al panel de control de configuración de usuarios, te devuelves hasta Usuarios y le das a Crear usuario, sigues el asistente y luego sólo cambias de usuario al nuevo.

Si no te da, siempre puedes estar en una red y hacer el último punto "Utilizando PsExec".

# July 4, 2011 4:34 PM

Hector ha opinado:

Joder, este tutorial me ha salvado la vida. Te lo agradezco mucho.

# August 10, 2011 2:20 AM

Checho ha opinado:

Me alegra Hector, ¡Muchas gracias por el comentario!

# August 10, 2011 6:41 AM

Manuel jesus el efectivo idolo de las multitudes ha opinado:

hola amigo muchas gracias por el aporte con simplemente descargar y ejecutar el archivo me solucionaste el problema

# August 13, 2011 4:07 AM

Checho ha opinado:

@Manuel,

Me da mucho gusto, ¡Gracias por compartirnos el feedback!

# August 13, 2011 5:36 AM

micorreopersonal ha opinado:

Te agradezco enormemente tu trabajo. Me ha ayudado mucho y me ha evitado un monton de horas de malos sueños.

Gracias

# August 18, 2011 12:04 PM

Checho ha opinado:

Hola,

Es con todo el gusto, ¡Gracias a ti por el feedback!

# August 18, 2011 2:49 PM

Javier ha opinado:

Gracias, tu manual de instrucciones fue simplemente maravilloso, me salvaste la vida viejo.

# August 25, 2011 3:03 AM

Javier ha opinado:

Gracias por tu maravilloso manual, me has salvado la vida viejo.

# August 25, 2011 3:04 AM

Checho ha opinado:

@Javier,

¡Gracias a ti por comentar y por el feedback!

Me alegra que te haya podido ayudar.

# August 25, 2011 3:07 AM

rony ha opinado:

te pasaste brother ... me solucioanste el problema..gracias.. infinitas gracias

# August 26, 2011 11:09 PM

Checho ha opinado:

¡Con gusto Rony! Gracias por tu comentario.

# August 27, 2011 4:59 AM

yoel ha opinado:

Hola, Disculpa de antemano, pero es que soy nuevo en esto y me estoy quebrando la cabeza, porque lo que me pasa es similar , hasta el momento tengo que abrir los archivos como administrador, pero un ejemplo es con un video mpg etc, al darle click me dice lo de crear una asociacion al archivo etc.. voy a panel de control y a programas predeterminado y ya esta asociado a windows player y ademas el windows player tiene todos los codecs de lectura de archivos incluso ya hice 3 limpiezas con el AVG y TuneUp utilities, y no entiendo porque?....

y estaba a punto de empezar a seguir tu tutorial pero no se si me va  a ayudar teniendo un windows vista , te pido porfavor me digas si este proceso me va en el vista tambien, y gracias de antemano  y excelente articulo es el mejor que hay en la red, saludos

# January 10, 2012 11:03 PM

Checho's Blog ha opinado:

Descripción del problema: En Windows 7, suele ser común que se cambie la asociación de los Accesos Directos

# February 13, 2012 6:46 PM

Checho's Blog ha opinado:

Hola a todos, Ya hemos tocado aquí varias características notables del nuevo Windows 8, algunas enfocadas

# September 15, 2012 6:28 AM

kmylorod ha opinado:

hola amigo, un favor, yo tengo el problema que los iconos de acdeso directo de auto CAD, microdoft office, adobe reader cambiron a los que aparecen cuando no hay un programa para ejecutarlo, pero si se ejecutan, todo fue a raiz de que cambie los atributos de mi usuario para tener el control total, ya intente las dos primeras opciones que manejas pero no hay mejora, ¿que puedo hacer?

# November 17, 2013 3:04 AM