Erwin.Ried.cl / Documentos / Windows /
El caso de la actualización fallida de Vista Business

Un día, y sin motivo aparente, mi sistema no instaló un paquete de una actualización. Lo más extraño era que el error no estaba documentado, no era diagnosticable fácilmente y ni siquiera los ingenieros del soporte técnico de Microsoft pudieron darme una solución. ¿Se saldrá Windows con la suya en esta ocasión? (15/12/2007 01:21 PM)


Por motivos místicos, hace un par de semanas una actualización que prometía incrementar la compatibilidad y estabilidad de mi instalación de Windows Vista Business x86 falló su instalación. El fallo no era instantáneo, Windows Update instalaba aparentemente el paquete, pero al momento de reiniciar el sistema fallaba en completar los cambios y Windows pedía continuamente la misma actualización.

Si no fuera tan perfeccionista probablemente me hubiera olvidado del asunto, sin embargo me molestaba de sobremanera no poder instalar, en particular, el siguiente paquete de actualización:

KB938194
An update is available that improves the compatibility and reliability of Windows Vista

INTRODUCTION
This update resolves some compatibility issues and reliability issues in Windows Vista. By applying this update, you can achieve better reliability and hardware compatibility in various scenarios.

http://support.microsoft.com/kb/938194/en-us




1. Google, siempre Google

Siempre, lo primero es buscar en la red. Esta pequeña premisa podría evitar miles de millones de GB que son transferidos en Internet sólo por concepto de preguntas formuladas por gente que no lo hace.

Aunque me considero un bastante buen buscador, luego de un rato descubrí que sería imposible precisar el motivo de mi problema pues el código de error (80070003) que me entregaba el instalador era absolutamente genérico y se repetía en un millar de ocasiones para diferentes paquetes de actualización.

Incluso el mismo actualizador ofrecía una solución, aunque como lo sospeché, aquella solución era tan genérica como mi error mismo y ciertamente no ahuyentaba mi problema:





2. ¿Filemon, Regmon?, no. Procmon

Difícil es ignorar la genialidad que Mark Russinovich y Bryce Cogswell demostraron al desarrollar las mejores herramientas de diagnóstico que existen en cualquier plataforma. La fusión de Filemon y Regmon en Procmon es sin duda una de las herramientas que más utilizo y es impensable no usarlo en este caso.

Nota
De más está decir que Filemon y Regmon no corren en Windows Vista, pues a cualquiera que le interese saberlo lo habrá comprobado fácilmente. En realidad esta limitante es totalmente artificial, pues la idea es potenciar a Procmon. De todas formas, si necesitamos alguno de estos programas en el flamante Vista, es cosa hacer pequeños retoques al ejecutable:



Y en la aplicación casi gemela es lo mismo:



La demostración queda "tarea para la casa".


Instalé la actualización y antes de reiniciar el equipo para aplicar los inaplicables cambios activé el seguimiento de Process Monitor en conjunto con el inicio del sistema operativo. De esta forma, pensé, que podría llegar al hueso del problema y descubrir el motivo de porqué misteriosamente fallaba el proceso.

Muy equivocado estaba, el seguimiento de la operación era una tarea titánica. Cerca de un millón de eventos registrados por Process Monitor no me daban una solución sencilla y poco trabajosa, incluso filtrando aquellos datos no conseguiría descubrir el trasfondo tras el problema. Es interesante el hecho de que en un par de minutos, es fácil alcanzar algo más de un cuarto de millón de eventos registrados en Windows Vista cuando, en XP puede haber instantes en que incluso no exista actividad alguna del sistema:



Resignado, temporalmente, decidí ocultar la actualización, a la espera de la remota posibilidad de que en caso de que aparezcan y fallen nuevas actualizaciones, pueda diagnosticar fácilmente el insólito problema:





3. Llamando al soporte

Aprovechando mi licencia original de Windows, llamé al soporte de Microsoft. Nunca antes había llamado y esperaba obtener la respuesta exacta de alguien que, de forma imposible hubiera viajado al futuro, leído este artículo y tuviese la bondad de relatarme los procedimientos requeridos para subsanar la fallida actualización.

Luego de un ritual inacabable en donde debí proporcionar mis datos y números de licencia, me transfirieron al "equipo de ingenieros" en donde un experto me ayudaría. Al cabo de casi dos horas de indicaciones y preguntas el personaje del soporte me pidió unos archivos y me reservó otra hora de soporte para tener tiempo de revisar aquellos archivos.

En este instante comprendí que no habría solución mágica, sin embargo no contaba precisamente con el tiempo libre necesario para diseñar una solución. Curiosamente de la llamada al soporte de Microsoft descubrí el entrenamiento que deben recibir como para dejar el problema en una especie de limbo en donde el usuario casi puede llegar a pensar en que su problema está solucionado cuando en el mundo real no se avanzó a nada cercano a una solución. Algo valorable es la rutina de "restauración" de todo lo relacionado con las actualizaciones que me mandó aquel experto:

Código:
@ECHO OFF
ECHO Soporte Tecnico de Microsoft - Scripts de ejecucion automatica.
pause
ipconfig /flushdns
proxycfg -d
proxycfg -u
netsh winsock reset
net stop wuauserv
ren %windir%\SoftwareDistribution SoftDist.borrar
net stop cryptsvc
ren %systemroot%\system32\catroot2 cr2.borrar
net start cryptsvc
regsvr32 /s wuapi.dll
regsvr32 /s wups.dll
regsvr32 /s wups2.dll
regsvr32 /s wuaueng.dll
regsvr32 /s wuaueng1.dll 
regsvr32 /s wuauserv.dll
regsvr32 /s wucltui.dll
regsvr32 /s wuweb.dll
regsvr32 /s msxml.dll
regsvr32 /s msxml2.dll
regsvr32 /s msxml3.dll
regsvr32 /s urlmon.dll
net start wuauserv
regsvr32 /s softpub.dll
regsvr32 /s initpki.dll
regsvr32 /s mssip32.dll
regsvr32 /s wintrust.dll
regsvr32 /s dssenh.dll
regsvr32 /s rsaenh.dll
regsvr32 /s gpkcsp.dll
regsvr32 /s sccbase.dll
regsvr32 /s slbcsp.dll
regsvr32 /s cryptdlg.dll
regsvr32 /s jscript.dll
net stop bits
regsvr32 /s qmgr.dll
regsvr32 /s qmgrprxy.dll
net start bits
ECHO Aqui finaliza la ejecucion de este script automatico.
ECHO Gracias por utilizar el Soporte Tecnico de Microsoft!
pause


Si por casualidad llegaste a este documento por un problema similar, te recomiendo fehacientemente que ejecutes esa secuencia de comandos, reinicies y compruebes si en tu caso sirve. La rutina no borra nada importante, sólo inicializa lo relacionado con las actualizaciones, sin eliminar ninguna actualización ya aplicada al sistema.

Por cierto, no me sirvió en mi caso.



4. Manos a la obra

Todos los usuarios de Windows están mal acostumbrados a todo. Bajan e instalan lo que sea, tienen varios pares de aplicaciones y servicios innecesarios, y son cómodos, muy cómodos. En parte Microsoft nos engaña haciéndonos creer que todo es muy trivial y con un pequeño problema (como la falla de una actualización) nos damos cuenta que no es así y probablemente luchar arduamente durante horas contra algo como instalar una tarjeta de red, un módem o una tarjeta de video fueron siempre el cobros retenidos para los que no eligieron la libertad. Cobros bastante pequeños a mi parecer.

La solución evidente que se me viene a la mente, es llanamente reemplazar los archivos modificados por la actualización, para esto instalo mi versión actual de Windows en una máquina virtual:



Ahora instalo la problemática actualización. Con sorpresa y rabia veo que la actualización instala perfectamente, lo que reafirma una vez más que la causa del problema fue probablemente uno de mis incontables intentos por alterar Windows, especialmente Vista que es mucho más delicado y sensible en cuanto a permisos, alteraciones y esas cosas que por naturaleza tienden a intentar infectar nuestro sistema.

En este instante la actualización que instalé no fue por medio de Windows Update, lo hice por medio de un paquete independiente (los cuales sólo tienen las modificaciones de los archivos, algo así como una lista de diferencias):



Lo importante ahora es encontrar las diferencias entre archivos. Este proceso pudo ser tedioso, aunque realmente no necesitó nada más que copiar unas listas de la siguiente página: http://support.microsoft.com/kb/938194/en-us.

Un poco de Excel 2007, copiamos esa lista y rápidamente creo una rutina que extrae los archivos modificados:

Código:
rem
rem ----- copiar archivos de sistema a \backup -----
rem
@echo off
md %SystemDrive%\backup
copy %ProgramFiles%\Windows Calendar\wincal.exe %SystemDrive%\backup\Wincal.exe
copy %SystemRoot%\system32\Dps.dll %SystemDrive%\backup\Dps.dll
copy %SystemRoot%\system32\Cdd.dll %SystemDrive%\backup\Cdd.dll
copy %SystemRoot%\system32\drivers\Dxgkrnl.sys %SystemDrive%\backup\Dxgkrnl.sys
copy %SystemRoot%\system32\Msftedit.dll %SystemDrive%\backup\Msftedit.dll
copy %SystemRoot%\system32\Netcfgx.dll %SystemDrive%\backup\Netcfgx.dll
copy %SystemRoot%\system32\Localspl.dll %SystemDrive%\backup\Localspl.dll
copy %SystemRoot%\system32\drivers\Pacer.sys %SystemDrive%\backup\Pacer.sys
copy %SystemRoot%\system32\Pacercnt.h %SystemDrive%\backup\Pacercnt.h
copy %SystemRoot%\system32\Pacerprf.dll %SystemDrive%\backup\Pacerprf.dll
copy %SystemRoot%\system32\Pacerprf.ini %SystemDrive%\backup\Pacerprf.ini
copy %SystemRoot%\system32\Traffic.dll %SystemDrive%\backup\Traffic.dll
copy %SystemRoot%\system32\Wshqos.dll %SystemDrive%\backup\Wshqos.dll
copy %SystemRoot%\system32\ras\Cis.scp %SystemDrive%\backup\Cis.scp
copy %SystemRoot%\system32\Kmddsp.tsp %SystemDrive%\backup\Kmddsp.tsp
copy %SystemRoot%\system32\drivers\Ndistapi.sys %SystemDrive%\backup\Ndistapi.sys
copy %SystemRoot%\system32\drivers\Ndproxy.sys %SystemDrive%\backup\Ndproxy.sys
copy %SystemRoot%\system32\Ndptsp.tsp %SystemDrive%\backup\Ndptsp.tsp
copy %SystemRoot%\inf\Netrasa.inf %SystemDrive%\backup\Netrasa.inf
copy %SystemRoot%\inf\Netrass.inf %SystemDrive%\backup\Netrass.inf
copy %SystemRoot%\inf\Netrast.inf %SystemDrive%\backup\Netrast.inf
copy %SystemRoot%\system32\ras\Pad.inf %SystemDrive%\backup\Pad.inf
copy %SystemRoot%\system32\ras\Pppmenu.scp %SystemDrive%\backup\Pppmenu.scp
copy %SystemRoot%\system32\Rascfg.dll %SystemDrive%\backup\Rascfg.dll
copy %SystemRoot%\system32\Rasctrnm.h %SystemDrive%\backup\Rasctrnm.h
copy %SystemRoot%\system32\Rasdiag.dll %SystemDrive%\backup\Rasdiag.dll
copy %SystemRoot%\system32\Rasmxs.dll %SystemDrive%\backup\Rasmxs.dll
copy %SystemRoot%\system32\Rasser.dll %SystemDrive%\backup\Rasser.dll
copy %SystemRoot%\system32\ras\Switch.inf %SystemDrive%\backup\Switch.inf
copy %SystemRoot%\system32\drivers\Wanarp.sys %SystemDrive%\backup\Wanarp.sys
copy %SystemRoot%\system32\Riched20.dll %SystemDrive%\backup\Riched20.dll
copy %SystemRoot%\system32\Riched32.dll %SystemDrive%\backup\Riched32.dll
copy %SystemRoot%\system32\Icsunattend.exe %SystemDrive%\backup\Icsunattend.exe
copy %SystemRoot%\system32\Ipnathlp.dll %SystemDrive%\backup\Ipnathlp.dll
echo.
echo ...Listo.
pause


Ya teniendo los archivos modificados, es cosa de guardarlos en la misma carpeta de "backup" en mi equipo real e "inyectarlos" desde una consola de sistema abierta desde un disco (el mismo disco de instalación permite esta acción):

La rutina para "inyectar" a fuerza bruta nuestras actualizaciones, no requiere más que un cambio en las columnas y también es trivial:

Código:
rem
rem ----- copiar \backup a los directorios de sistema  -----
rem
@echo off
copy %SystemDrive%\backup\Wincal.exe %ProgramFiles%\Windows Calendar\wincal.exe
copy %SystemDrive%\backup\Dps.dll %SystemRoot%\system32\Dps.dll
copy %SystemDrive%\backup\Cdd.dll %SystemRoot%\system32\Cdd.dll
copy %SystemDrive%\backup\Dxgkrnl.sys %SystemRoot%\system32\drivers\Dxgkrnl.sys
copy %SystemDrive%\backup\Msftedit.dll %SystemRoot%\system32\Msftedit.dll
copy %SystemDrive%\backup\Netcfgx.dll %SystemRoot%\system32\Netcfgx.dll
copy %SystemDrive%\backup\Localspl.dll %SystemRoot%\system32\Localspl.dll
copy %SystemDrive%\backup\Pacer.sys %SystemRoot%\system32\drivers\Pacer.sys
copy %SystemDrive%\backup\Pacercnt.h %SystemRoot%\system32\Pacercnt.h
copy %SystemDrive%\backup\Pacerprf.dll %SystemRoot%\system32\Pacerprf.dll
copy %SystemDrive%\backup\Pacerprf.ini %SystemRoot%\system32\Pacerprf.ini
copy %SystemDrive%\backup\Traffic.dll %SystemRoot%\system32\Traffic.dll
copy %SystemDrive%\backup\Wshqos.dll %SystemRoot%\system32\Wshqos.dll
copy %SystemDrive%\backup\Cis.scp %SystemRoot%\system32\ras\Cis.scp
copy %SystemDrive%\backup\Kmddsp.tsp %SystemRoot%\system32\Kmddsp.tsp
copy %SystemDrive%\backup\Ndistapi.sys %SystemRoot%\system32\drivers\Ndistapi.sys
copy %SystemDrive%\backup\Ndproxy.sys %SystemRoot%\system32\drivers\Ndproxy.sys
copy %SystemDrive%\backup\Ndptsp.tsp %SystemRoot%\system32\Ndptsp.tsp
copy %SystemDrive%\backup\Netrasa.inf %SystemRoot%\inf\Netrasa.inf
copy %SystemDrive%\backup\Netrass.inf %SystemRoot%\inf\Netrass.inf
copy %SystemDrive%\backup\Netrast.inf %SystemRoot%\inf\Netrast.inf
copy %SystemDrive%\backup\Pad.inf %SystemRoot%\system32\ras\Pad.inf
copy %SystemDrive%\backup\Pppmenu.scp %SystemRoot%\system32\ras\Pppmenu.scp
copy %SystemDrive%\backup\Rascfg.dll %SystemRoot%\system32\Rascfg.dll
copy %SystemDrive%\backup\Rasctrnm.h %SystemRoot%\system32\Rasctrnm.h
copy %SystemDrive%\backup\Rasdiag.dll %SystemRoot%\system32\Rasdiag.dll
copy %SystemDrive%\backup\Rasmxs.dll %SystemRoot%\system32\Rasmxs.dll
copy %SystemDrive%\backup\Rasser.dll %SystemRoot%\system32\Rasser.dll
copy %SystemDrive%\backup\Switch.inf %SystemRoot%\system32\ras\Switch.inf
copy %SystemDrive%\backup\Wanarp.sys %SystemRoot%\system32\drivers\Wanarp.sys
copy %SystemDrive%\backup\Riched20.dll %SystemRoot%\system32\Riched20.dll
copy %SystemDrive%\backup\Riched32.dll %SystemRoot%\system32\Riched32.dll
copy %SystemDrive%\backup\Icsunattend.exe %SystemRoot%\system32\Icsunattend.exe
copy %SystemDrive%\backup\Ipnathlp.dll %SystemRoot%\system32\Ipnathlp.dll
echo.
echo ...Listo.
pause


Y en un par de minutos, nuestro sistema está actualizado, por la razón o la fuerza como enmienda el lema patrio de mi país.



5. La guinda de la torta

Aún la victoria no es completa. Al reiniciar Windows con los "actualizados" archivos ya copiados, Windows Update vuelve a pedir la instalación del dichoso paquete. Claramente nunca detectó los cambios en los archivos, la forma más sencilla finalizar el trabajo es descubriendo la forma de engañar al motor de actualizaciones del equipo.

Volvemos a la máquina virtual, lo lógico sería intentar actualizar el mismo paquete independiente y comprobar en qué punto el sistema respondió "no, no necesito esa actualización". Al ejecutar la actualización recibimos la esperada advertencia:



Como la actualización no es un ejecutable, debemos depurar al verdadero motor de actualización, particularmente: "\Windows\System32\wusa.exe". En realidad "depurar" nos llevaría un par de minutos, lo mejor es volver a utilizar Process Monitor una vez más, enfocado ahora en "wusa.exe" y sólo en los eventos de registro y archivos. Ahora, guardo la lista de eventos.

Vuelvo a ejecutar el paquete ahora en mi sistema (el cual supuestamente necesita la actualización), capturando de nuevo los eventos de "wusa.exe". Con cualquier programa adecuado (Araxis Filemerge, WinDiff, entre otros), saco las diferencias entre las dos capturas de eventos y genero un archivo de registros listo para importar a mi sistema el "enfermo":



Y el resultado es un éxito (y relajo) total:



Nada como mantener el equipo actualizado, ¿cierto?

Haga clic sobre una de las estrellas para calificar este artículo.

Opiniones y comentarios (Escribir un nuevo comentario)
No digo que openoffice no sea bueno, pero decir que excel no sabe ni sumar cuando, dicho por muchos expertos, es de lo mejorcito en hojas de calculo, me parece exagerado. Ademas, gente como tu que "odia" a microsoft (aun no se por que) me repatea ya que lo unico que haceis es sacarle cosas malas a sus productos y alabar los productos, en general, para linux (como si ese sistema fuera el mejor del mundo). Ha quedado demostrado que si linux no sufre muchos ataques de virus es por que no sale "rentable" a los hackers ya que windows (y sus productos) es lo mas utilizado en el mundo (ya se descubrieron algunos fallos garrafales en linux). Ahh, y por cierto, echadle un vistazo a la noticia del experimento MOJAVE de microsoft: http://software.adslzone.net/2008/07/30/microsoft-y-su-experimento-mojave/
Escrito por Yo mismo (21/09/2008 05:03 AM)
Jajajaja... puchas que sonrío cuando paso a leer por aquí. La verdad es que son pocos los que tienen la capacidad de escribir de forma tan amena algo que la mayoría de los mortales no entiende... OK, confieso que no lo entendí todo, pero de alguna manera te entiendo, aunque mis problemas con windows sean más chiquitos. Por cierto, tu reloj de windows, se sincroniza bien??? Yo sólo obtengo la hora oficial-oficial... de invierno!! Y de mis búsquedas googleanas sólo consigo volver a aprender a "sincronizar la hora con un servidor horario de internet"
Escrito por Layz (18/01/2008 12:17 PM)
Mi reloj anda bien, pero si me explicas al correo el problema con alguna captura de pantalla podría ayudarte
Escrito por Erwin Ried (18/01/2008 12:42 PM)
Me gustó mucho el sitio y los artículos q publicaste, muy original, y mirá que suelo andar buscando éstos temas y no se suelen ver sitios así. Te aliento a que sigas publicando cosas interesantes. Felicitacione!!! Un saludo desde Argentina. Santiago.
Escrito por Santiago (20/12/2007 03:27 AM)
Que bueno tu articulo. Seguro no todo el mundo tiene el tiempo y la paciencia como para dedicarse a hacer esa cosas y menos los que no tenemos tanto conociento. Se que llegara el dia en que todos nos cambiemos a VISTA y espero sigas publicando articulos sobre posibles fallas cuando se presenten. Saludos desde Venezuela.
Escrito por John B. (15/12/2007 12:43 PM)
Que caro sale windows en tiempo. ¿Porqué lo usas? y lo que más me asombra ¿usas excel? que no sabe ni sumar. Aunque tengas que usar windows usa openoffice. Por otra parte aprovecha la tecnologia VT con XEN o KVM (paravirtualización) y ten dos sistemas a la vez por si acaso.
Escrito por mitcoes (26/11/2007 10:42 AM)
Yo creo que la elección del sistema es cosa personal, en general no tengo quejas adicionales con los productos que mencionas a las que expongo aquí en mi sitio (considerando que utilizo un computador gran parte del día)
Escrito por Erwin Ried (26/11/2007 01:25 PM)
Fueron "detalles" como este uno de los principales motivos por los que después de una relación amor/odio de años acabo de terminar definitivamente con Windows... Que tiempos, pero me doy cuenta de que me estoy haciendo viejo y ya no dispongo (me niego a disponer) de las horas necesárias de mi vida que perder "jugando" con windows... Por cierto, magnifica eXposición la tuya... Y es cierto,no importa cuantas horas y horas y horas y... bueno, horas nos lleve, cuando lo solucionamos nos queda una sensación de orgullo que cuando se nos ve, nadie creeria que hemos acabado de dejar de lado una buena parte de nuestras vidas arreglando algo que en primer lugar nunca debió fallar... Envejecemos.... Un saludo !
Escrito por EQUILIBRIUM (13/11/2007 12:33 AM)
Como dijiste en tu articulo, los usuarios comodos preferimos esperar a que Microsoft solucione el problema, pero por lo que lei...el problema no es de Microsoft, es de una persona que se mete a modificar TODO lo que trae windows ;) gran articulo!
Escrito por XtremEXiLe (27/10/2007 02:36 PM)
Realmente cuando consigues etsa pequeñas cosas, luego te sientes realmente a gusto
Escrito por ..D.. (25/10/2007 12:28 PM)
...pequeños grandes detalles
Escrito por Erwin Ried (25/10/2007 01:29 PM)

Copyright © 2013 por Erwin Ried.