¡Hola!
En el que para mi es un formidable espacio de aprendizaje los Foros de TechNet y Answers (MSDN también por supuesto!) constantemente se producen y se siguen problemas en Windows y en general todos los productos que se vuelven muy interesantes por lo complejos y muy satisfactorios al encontrar entre todos una solución porque no sólo el que crea el hilo aprende sino que todos los que tratamos de ayudar también lo hacemos.
Hay un problema que se ha estado presentando con bastante frecuencia últimamente, y es que al intentar abrir una carpeta ubicada en cualquier directorio obtienen el siguiente mensaje de error:
“Este archivo no tiene ningun programa asociado para ejecutar esta acción. Por favor instale el programa o si lo tiene cree una asociación en el panel de control de programas predeterminados”
El problema como el planteado en el artículo pasado pasa por la asociación de archivos que tiene Windows. Este mensaje es muy similar cuando se pierde la asociación de extensiones de algún ejecutable (.exe, msi) o incluso cualquier otro tipo de archivo que reconozca el sistema operativo.
Puntualmente aquí el problema sólo se presenta abriendo carpetas y no ejecutando algun otro tipo de archivo.
Afortunadamente para mí logré reproducir el problema en un equipo y digo “afortunadamente” porque estos problemas se presentan por lo general porque Windows hace la búsqueda en el registro por la asociación de la extensión o tipo de archivo pero cuando falta o está corrupta obviamente debe informarlo.
Para saber qué está pasando entonces procedí a llamar al mejor recurso que se puede tener con estos inconvenientes, de nuevo Process Monitor!
Recordemos que esta Herramienta de Sysinternals nos ayuda a monitorear todo lo que está pasando a nivel de I/0 en disco, red, registro entre muchas otras y que por supuesto nos dan una gran mano.
Lo que hice (Todavía bastante novato con Sysinternals!) fue hacer un trace en la máquina que tenía el problema abriendo la carpeta y en una máquina donde todo estaba funcionando muy bien, posteriormente guardar el Log y empezar a comparar todas las operaciones que se estaban haciendo para saber cuál era la que invocaba la asociación a las carpetas.
Lo primero que encontré es que se hacían unas llamadas a HKCRDirectory y a varias claves internas pero los resultados tanto en el equipo con el problema (Captura derecha) como el que procedía correctamente (Captura izquierda) eran muy similares.
Seguí buscando minusiosamente descartando operaciones que podía filtrar fuera del problema hasta que encontré otra referencia a HKCRFolder (HKEY_CLASSES_ROOTFolder) y de nuevo a varias claves dentro de esta carpeta, así que de nuevo comparé los resultados de los dos equipos:
Mirando cada línea encontré que la mayoría de los resultados eran de nuevo similares exceptuando uno: HKCRFolderShellOpenCommand
En el Equipo que estaba funcionando entregaba un resultado de SUCCESS:
Pero, en el Equipo que presentaba el error tenía como resultado NAME NOT FOUND:
Cabe aclarar que el resultado NAME NOT FOUND no siempre se refiere a un problema puesto que Windows puede intentar realizar consultas en un registro “padre” y al no tener resultados, pasa a realizar la consulta en un registro “hijo”.
Aquí por supuesto no pasaba esto ya que claramente en la máquina funcional estaba teniendo un resultado de exitoso pero en la otra no podía hacer referencia a la clave.
Decidí entonces ir hasta la llave del registro, desde Process Monitor, para esto basta con hacer clic derecho sobre la llave y seleccionar Jump to…
Como era de esperarse, en el equipo que entregaba un resultado satisfactorio la clave existía y funcionaba:
Al hacer este mismo proceso en el Equipo no funcional encontré que la clave no existía:
La solución…
Windows para el caso de abrir una carpeta, entre muchas operaciones referencia a esta clave para establecer la asociación con Windows Explorer y además para que la ventana sea mostrada en el directorio donde se está ejecutando.
Actualización:
Para solucionar el problema tenemos dos opciones:
Descargar FixAss®, una pequeña aplicación que desarrollé para reparar automáticamente la asociación de Carpetas y Directorios. Para esto descargan el archivo, descomprimen el ejecutable y lo ejecutan para recibir el cuadro de confirmación de la tarea, al cerrar el cuadro pueden revisar nuevamente la apertura de carpetas.
Lo pueden bajar desde aquí:
Solución manual:
Si el problema persiste pueden haber otras claves corruptas o perdidas dentro de HKCRFolder o HKCRDirectory.
Para este caso la solución más inmediata sería exportar estas claves desde un equipo funcional y posteriormente importarlas en el equipo que tiene los problemas.
También pueden hacer si desean ustedes mismos el Trace con el Process Monitor!
Para los que puedan ver este artículo buscando solución y la anterior no la proporcionó, les dejo el enlace a mi Skydrive con las dos llaves de Registro (Folder y Directory) para que las descarguen, descompriman y ejecuten para solucionar el problema:
Espero les pueda servir y de nuevo los invito a que se den un pasón por los Foros de Microsoft TechNet y Microsoft Answers.
Saludos,
-Checho-