domingo, 4 de marzo de 2007

La madre de todas las impresoras (Core Drivers)

Otro de los problemas que me he encontrado, configurar mi impresora HP Deskjet 845c en Windows Vista. Además, parece que no soy el primero que se encuentra este problema (ver http://www.eggheadcafe.com/software/aspnet/29342928/missing-drivers.aspx).

El problema es que HP dice que no pone drivers a disposición del público porque los drivers están incluidos en Windows Vista (y es verdad, están en %systemroot%\system32\driverstore\filerepository\prnhp001.inf_5641fa75), pero al intentar instalar el driver que viene con Vista el sistema dice que no encuentra un "Core Program".

Tras varias investigaciones me he encontrado que con windows Vista un driver puede depender de otro que se llama "Core Driver" y que han cambiado algo la forma de empaquetar los drivers "Package aware drivers".

Tras mirar el fichero del driver de la impresora HP "prnhp001.Inf" he encontrado que el driver de esta impresora depende de dos "Core Drivers", el UNIDRV y el sRGBPROFILE.OEM. He encontrado que estos "Core Drivers" los instala el fichero de impresoras genérico de Microsoft "driverstore\filerepository\ntprint.inf_a6d3ccdf\ntprint.inf".

Mirando un poco dentro de estos dos ficheros me he encontrado los GUID de ambos "Core Drivers" {D20EA372-DD35-4950-9ED8-A6335AFE79F0} y ...F3}. Resulta que mirando un poquito en el registro me encontré que en la rama "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\PackageInstallation\Windows NT x86\CorePrinterDrivers" existía otra rama con la clave terminada en F0} (que es la del UNIDRV) y otra terminada en F5} (que es la del XPSDRV)pero no había una para la clave terminada en F3, así que con un par lo que he hecho para engañar a Windows es exportar la clave del registro de uno de estos GUIDS, cambiar el GUID para que terminara en F3 e importarla.

El fichero .reg es el siguiente:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\PackageInstallation\Windows NT x86\CorePrinterDrivers\{D20EA372-DD35-4950-9ED8-A6335AFE79F3}]
"InfPath"="C:\\Windows\\System32\\DriverStore\\FileRepository\\ntprint.inf_a6d3ccdf\\ntprint.inf"
"DriverDate"="06/21/2006""DriverVersion"="6.0.6000.16386"

Una vez aplicado el "parche", pido a Windows que reinstale el driver de la impresora y voila... Todo resuelto, no sólo eso, ahora en "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\PackageInstallation\Windows NT x86\CorePrinterDrivers" aparecen 5 entradas desde ...F0} hasta ...F5}.

Un par de enlaces interesantes son:

No hay comentarios: