You are on page 1of 14

La perdida de asociacin de accesos directos y ejecutables en Windows 7. Process Monitor, Process Explorer, PsExec y su solucin.

Hola, En artculos anteriores ya hemos visto problemas relacionados con Asociacin de iconos en Windows 7 o Asociacin de Carpetas y Directorios pero, Windows maneja internamente distintos tipos de asociacin y aun nos falta la de archivos o extensiones en general pues estn implicadas diferentes claves o subclaves de Registro. En este post exploraremos uno de los problemas ms frecuentes con respecto a la Asociacin de archivos que se refieren a los Accesos directos (.lnk), Ejecutables (.exe) y diferentes formas de solucionar el inconveniente que van desde la ms fcil hasta la que se vuelve un poco ms compleja acudiendo a Sysinternals. *Nota: El Artculo puede estar extenso por lo que se plantear cada solucin al detalle posible, la idea es que puedan encontrar diferentes caminos para solventar el problema. El problema Cada aplicacin que se instala en Windows puede manejar un tipo de extensin de archivo propia para identificar que los archivos se ejecutan y trabajan con esa aplicacin, por ejemplo la extensin PDF es propia de Adobe Reader aunque la extensin puede estar dentro de un estndar general para que otras aplicaciones tambin puedan administrar estos archivos como la misma .PDF o por ejemplo .ISO Cuando se instala el Software, automaticamente toma posesin de sus extensiones pero, Windows puede cambiar este comportamiento para nosotros decidir con qu aplicacin queremos abrir el archivo determinado. El problema est cuando por accidente o desconocimiento cambiamos una extensin que administra Windows por ejemplo o que es desconocida para la plicacin como la de los Accesos directos (.lnk). El resultado ser entonces que los iconos cambian al de la aplicacin seleccionada y adems todo lo que tenga esa extensin .lnk intentar abrirlo sin resultado. Si por ejemplo, afectamos la asociacin de accesos directos (.lnk) para que se abra con Windows Media Player, podremos tener una visualizacin de nustros accesos as:

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 extensin:

El archivo seleccionado tiena una extensin (.lnk) que <Aplicacin> no reconoce

La causa
El primer paso si no se sabe qu est sucediendo sera recurrir a Process Monitor de Sysinternals y a continuacin 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 operacin relacionada con la clave de Registro: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk\UserChoice Equipo Funcional:

Equipo NO Funcional:

Como ven, en el Equipo funcional trata de abrir la clave de registroHKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk\UserChoice, al obtener como resultadoNAME 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 tambin con un resultado exitoso y finalmente cierra la operacin. En definitiva, esta clave tiene que ver con el problema, si vamos ms a fondo con el Process Monitor haciendo clic derecho y Jump To para abrir el registro, la agradable sorpresa sobre el valor Progid es:

Progid (Identificador de aplicacin) es el valor que se encarga de asociar la aplicacin 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 artculo, 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 slo por configuracin de usuario, por eso estn ubicados en la ruta de HKEY_CURRENT_USER (HKCU)

Primera solucin Para accesos directos (.lnk) Si slo tenemos afectados los Accesos directos, el procedimiento para volver a las asociaciones funcionales y originales es: - En el Equipo NO funcional, clic en el botn Inicio, teclear Regedit y sobre el resultado, clic derecho y Ejecutar como Administrador:

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

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

- Despus de eliminar la subclave, reiniciamos el sistema y los Accesos directos deberan 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 asociacin de los Accesos directos tambin se pierde la de los ejecutables (.exe) y es ah cuando surgen preguntas como Y cmo entro al Registro si no puedo abrir ningun ejecutable? Cmo lo soluciono?

De lo que podemos estar en la mayora de las ocasiones seguros es de que la causa no cambia, y en trminos generales la solucin tampoco ya que, se trata de eliminar la asociacin que sea crea en el registro pero adems 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 asociacin de ejecutables (.exe) no se puede entrar ni siquiera al Registro de Windows Recordemos que es Regedit.exeLa solucin extendida Para Accesos directos (.lnk) y Ejecutables (.exe)No todo est perdido y es que si en la solucin anterior aprovechamos el buen estado de la asociacin de ejecutables para arreglar la de accesos directos, en este caso aprovecharemos la asociacin de la que quizs sea una de las mejores herramientas que integra Windows: El blog de Notas (Notepad) en conjunto con los archivos de registro (.reg). Si bien tambin es un ejecutable (Notepad.exe), para crear un archivo de texto plano no es necesario invocar a la aplicacin, aprovecharemos esto entonces para generar una clave de registro desde el texto plano (Cambiando a extensin .Reg) para borrar las claves de registro implicadas en el problema (Aunque suene un poco contradictorio). Cmo hacerlo? - Sobre el Escritorio o cualquier directorio de preferencia del equipo NO funcional hacemos clic derecho y seleccionamos Nuevo > Documento de texto

*Nota: La estructura general de un archivo de Registro se compone de la siguiente forma: versinEditorRegistro lnea en blanco [rutaRegistro1] "nombreDato1"="tipoDatos1:valorDatos1" nombreDato2"="tipoDatos2:valorDatos2" lnea en blanco [rutaRegistro2] "nombreDato3"="tipoDatos3:valorDatos3" Por ejemplo, si quisieramos crear una nueva clave llamada Demo dentro deHKEY_CURRENT_USER teniendo en cuenta la versin del Registro en Windows 7 y la ruta, quedara as: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Demo] Se guarda con el nombre que se quiera y la extensin .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, slo 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 quedara as: Windows Registry Editor Version 5.00 [-HKEY_CURRENT_USER\Demo] Igualmente, se guardara con extensin .REG y al ejecutarlo e importarlo ya no existira 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 tendra 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]

Ahora, clic en Archivo, Guardar como, le pones cualquier nombre y no podemos olvidar la extensin .REG, para este artculo yo le puse FixLNKEXE.REG:

*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 operacin (Eliminar las claves afectadas) desde aqu: *Nota: Este fichero de registro es vlido para reparar el problema con slo una de las dos asociaciones afectadas tambin, por ejemplo la de Accesos directos (.lnk) por lo que lo pueden descargar y ejecutar en vez de seguir la solucin manual documentada anteriormente. Al ejecutar el fichero, importarlo y reiniciar o cerrar sesin en el equipo, los iconos y las aplicaciones deberan 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, Cul es el peor de los casos? Qu sucede si adems de los Accesos directos (.lnk) y los Ejecutables (.exe) ni siquiera la extensin de Texto plano (.txt) y de Registro (.reg) estn funcionales?

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 podra y es ah cuando uno podra en primera instancia pensar en restaurar sistema o hasta reinstalar Windows. Afortunadamente, como coment en el principio del artculo, el fallo de asociacin en la mayora de las ocasiones afecta por perfil slamente, 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 mayora 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, especficamente PsExec.

La solucin para el peor de los casos


PsExec nos permite bsicamente 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, slo ejecutar y trabajar! *Nota: PsExec requiere especficamente entregarle credenciales para darle los permisos de ejecucin 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 ms, debemos Cambiar de usuario e iniciar con otra cuenta que pertenezca al Grupo de Administradores en modo Aprobacin 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 vara por usuario) y eliminar las claves deUserChoice 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 ms fcil proceder directamente con PsExec. Forma manual: Entre todas las ramas que existen en el Registro, hay una especfica que contiene la deHKEY_CURRENT_USER entre otras por usuario, especficamente la rama de HKEY_USERS, el problema es que la identificacin por usuario lo hace con el SID (Identificador nico de usuario) por lo que a simple vista sera complicado determinar cul es la del perfil que necesitamos arreglar:

Cmo 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 botn apagar y Cambiar de usuario) los procesos que estn activos en la cuenta NO funcional se visualizarn en Process Monitor, si no haban 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:

En la ventana de Select Columns en la pestaa deProcess Image debemos seleccionar User Namepara poder ver esta informacin y clic en Aceptarpara que se visualice en Process Explorer:

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

Hacemos doble clic sobre el proceso y nos abrir la ventana de Propiedades, all nos pasamos a la pestaa de Seguridad y podremos ver la informacin que necesitamos:

Como ven, debajo de "User tenemos el SID correspondiente a ese proceso que previamente aseguramos que correspondiera al Explorer.exe del usuario NO funcional, especficamente el SID es:S-1-5-211231788061-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 ms de 4 que correspondan con el SID, debemos buscar en la primera. Una vez hecho esto, smplemente buscamos la Clave que corresponde a cada asociacin como si lo estuviramos haciendo desde el Regedit del usuario en cuestin. Como hay varias extensiones afectadas, debemos ubicar la clave que contiene todas nuevamente y despus empezar a reparar una por una. Recordemos que la clave de Asociacin de archivos por usuario est en: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exe Para este caso, variaran la primera por HKEY_USERS y a continuacin el SID, por ejemplo si fuera a buscar por el Acceso directo (.lnk) sera:
HKEY_USERS\S-1-5-21-1231788061-2787996694-3405420119-1006\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk

Aqu de nuevo, procedemos por extensin afectada (Por ejemplo .lnk, .exe, .txt, .reg) a borrar la sublcave de UserChoice haciendo clic derecho y Eliminar. Despus 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 descripcin de PsExec, nos permite ejecutar procesos pensandos ms para una mquina remota pero como todas las herramientas de Sysinternals tiene sorpresas estupendas y es que tambin lo puedo utilizar para ejecutar procesos en otras cuentas locales. Desde aqu pueden descargar PsExec y adems ver una descripcin directa del autor: http://technet.microsoft.com/es-es/sysinternals/bb897553 Si no queremos complicarnos ms de lo que ya estamos con este problema, debemos cerrar sesin desde la cuenta NO funcional (Tambin se puede cambiar de usuario), a continuacin Iniciar sesin con una cuenta que est en el Grupo de Administradores en modo aprobacin 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:

Desde la consola de Comandos debemos situarnos en el directorio donde se haya descargado PsExec utilizando el comando cd, por ejemplo, para este artculo que descargu la herramienta en el Escritorio, el comando sera: cd C:\Users\Administrador\Desktop donde Administrador es el nombre de usuario de la cuenta que iniciaron sesin y ENTER:

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 sesin y descargamos PsExec, <UsuarioNOFuncional> es el nombre de la cuenta que tiene el problema de asociacin que deseamos corregir, <PasswordNOFuncional> es la contrasea del usuario NO funcional (El del problema), h es para que haga la elevacin 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 sera: PsExec u Administrador\Demo p demopass h I C:\Windows\Regedit.exe

(Hacer clic para ver la captura para verla en tamao 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:

Desde la ventana de Registro ahora ya no tenemos que expandir HKEY_USERS sino que hacemos la bsqueda en la rama de HKEY_CURRENT_USER como si estuviramos logueados en la cuenta con el problema buscando las claves que originan el problema (Para este artculo por ejemplo .lnk, .exe, .txt, .reg):

Aqu, como en todo el artculo, clic derecho sobre la subclave UserChoice y seleccionamos Eliminar, hay que repetir todo esto para cada extensin afectada debajo de la clave: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts Reiniciamos el sistema, volvemos a iniciar sesin pero desde la cuenta afectada y el problema ahora debera estar resuelto. Todo listo! La otra posibilidad de que se empeorara el problema es que afectara por mquina y eso sera 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,