lunes, 29 de julio de 2013

Windows: urlmon.dll no encontrado

Este finde he tenido mucho lío. Al menos, desde el viernes al medio día hasta el sábado por la tarde/noche. Mi recomendación, si es que has llegado aquí porque tienes este problema, es que te lo leas entero. Eso sí: después actúa bajo tu responsabilidad. Lo que me a mi me ha funcionado, podría ser nefasto para tí.

Os pongo en antecedentes. Me llamaron para solucionar un problema con un equipo headless, léase, sin monitor. Por lo que lo primero que quise hacer fue intentar acceder a él por red. Muy bien. Para resumir: toda una tarde/noche entera sólo para conseguir ese acceso. Que si el ping a veces funcionaba, otras veces no. Otras veces, el escritorio remoto se empezaba a cargar y después se caía... Vamos. Un desastre. Incluso tuve que hacer alguna llamada para ver si a alguien se le ocurría alguna cosa para poder solucionar ese problema. Es lo típico: te obcecas en una cosa, que al final, hace falta que otra persona te ayude a serenarte y ponerte orden. Una desesperación.

Muy bien. Ya teníamos acceso y, en esto, mientras que se está cargando esa pantalla remota, que nos sale el siguiente mensaje de error:

El programa no puede iniciarse porque falta urlmon.dll en el equipo.  Intente reinstalar el programa para corregir el problema
El programa no puede iniciarse porque falta urlmon.dll en el equipo.
 Intente reinstalar el programa para corregir el problema
Y esto se vuelve otro quebradero de cabeza. Además, compruebas que efectivamente, no se encuentra la librería en el disco. ¡Se ha perdido! Pero, como ya es muy, muy tarde, te vas y ya mañana será otro día. Aún así, ya en casita, ¿qué es lo primero que haces? Lo primero, es buscar el Google. La verdad, es que hay algo por ahí que te suena que podías utilizar, pero no te acuerdas muy bien de lo que era. Pero bueno. ¿Qué respuestas encuentras? Encuentras varias.

"Bájate la dll de este sitio, y después la pegas. Ya está".,  Otros, además de eso, te dicen: "una vez la tienes, tendrás que registrarla con regsvr32 urlmon.dll desde C:\Windows\System32\". Ya, al otro día, pruebas otras ideas menos peligrosas. Ejecutar desde el cmd:

sfc /scannow

Aunque te dice que ha encontrado cosas que ha tenido que reparar, y que hay algunas que no ha sido posible, haces caso omiso al los logs que te ofrece en C:\Windows\Logs\CBS\CBS.log. Más adelante explicaré algo al respecto.

También pruebas a hacer el 

chkdsk /r /f

que no resuelve nada. 

Y surgen varias ideas. A ver si hay algún parche que falte por poner que modifique esta dll por lo que se resolvería el problema a poner una nueva. Pero, surgió otro problema más:

Error windows update código: 8024000E
Error windows update código: 8024000E
Y te pones a buscar. Lo que encuentras es que te ofrecen una serie de fixit para solucionar ese problema. No voy a negar que ahora mismo no tengo acceso a dichos ficheros. Que, además, te permitían bajártelos para poderlos ejecutar desde otro ordenador (que ese era mi caso). Otras soluciones que daban era instalar un programa (que me bajé, pero no utilicé) también de Microsoft, que se llama algo así como Windows Update Readiness Tool. Según la explicación de Microsoft, esta herramienta resuelve los posibles problemas que produzcan que una actualización no se instale. Pues bueno: El fixit que cogí, se quedó parado a mitad sin reaccionar, por lo que opté por matarlo. Además, ya éramos dos los que estábamos al lío: yo presencial, y el otro amigo por teléfono. La siguiente idea: Poner un punto de restauración anterior. Por no tentar a la suerte: de hace dos días para atrás. La verdad: tardó muy poco, apenas 5 o 10 minutos (¡ojo! que si lo intentas, a tí te podría tardar mucho más). Pero, sin resultado.

Tras un buen descanso y viendo que esto no tiraba, decidí mirar el log CBS.log que he comentado unos párrafos más arriba. Me dio por buscar el fichero urlmon.dll y me encontré con la sorpresa de que, en efecto, se había detectado que faltaba y que no era capaz de restaurarlo:

Cannot repair member file [...] urlmon.dll
Cannot repair member file [...] urlmon.dll
Además, se puede ver que pone un texto que llama mucho la atención:

This component was referenced by [...] "Package_2_for_KB2846071" 

(se me cortó el knowledge base en la foto. No hace falta decir que le subrayado son los valores importantes que no aparecen. Por lo tanto, dices: ¿Y si busco esta actualización, me la bajo, la ejecuto, y así se pone ese fichero? Una vez más, te encuentras que con que el ejecutarla no surte el efecto deseado. Aún así, te das cuenta que esa actualización es muy, muy reciente. Aunque no era esta la página donde vi la fecha, en la que acabo de referenciar se puede ver que su fecha de publicación es el 10 de julio de 2013. Por lo tanto, si tenemos esta actualización instalada, y, dado que cada vez que se hace un update del sistema se crea un punto nuevo, podremos hacer un downgrade / rollback / ir a un punto anterior y probar suerte. Ya no hay nada que perder. 

Por lo tanto, desde Inicio, podremos buscar Restaurar sistema, lanzarlo con privilegios de administrador, y seguir las instrucciones, teniendo en cuenta que tendremos que seleccionar el checkbox para que nos muestre el resto de puntos creados:

Restaurar sistema
Restaurar sistema
Por favor, ten en cuenta que esta pantalla no es la que tenía en su momento. Además, tendrás muy mala suerte si resulta que no se han creado más puntos o éstos se han ido eliminando. 

Una vez ya tienes la fecha correcta, que tiene que ser anterior al día que se actualizó (por no poner esa fecha misma, aunque no debería de haber ningún problema), podrás comprobar que ya no se queja y que todo vuelve a funcionar. 

Así es cómo pude arreglarlo. Hay algún paso que a lo mejor lo hice antes y otro después: Se que entre la primera  vez que hice la restauración y la última hice los intentos de los fixits, vi que el internet explorer no se abría, encontré que alguna librería más que me decían que tenía que registrar para hacer la solución "a mano" no la encontraba... Pero bueno. Más o menos estas son las cosas con las que me fui pegando para arreglar esto. 

Ahora que todo vuelve a funcionar, ¿Qué te queda? ¿No tienes el sistema desactualizado? Claro que sí: Has puesto un punto anterior, por lo que tendrás que ir a al windows update, y reinstalar las actualizaciones.

Por desgracia, si esto no hubiera sido posible arreglarlo así, la siguiente opción hubiera sido la última: reinstalar. Bueno. A lo mejor hubiera sonado la flauta si se hubiera cogido la librería de una instalación del mismo tipo de Windows (del pro al pro,  de personal al personal...), arquitectura: (x86, x64), incluso, si apuramos, compilación. Teniendo la suerte de tener otro equipo tuyo con las mismas características, podría (y digo podría), funcionar. Pero, los visos de que eso suceda...

No hay comentarios:

Publicar un comentario