Personalizar la profundidad de color de los iconos ya no tiene efecto en Windows Vista/7

Un usuario realizó esta pregunta desde la sección Contact del blog:

Tengo Windows 7 y me gustaría que mi aplicación configurara de manera temporal la profundidad de color de los iconos en 16 bits. El resto de la pantalla tiene que tener profundidad de color de 32 bits. En Windows 2000 esto lo hacía creando el valor de Registro Shell Icon BPP en la clave HKCU\Control Panel\Desktop\WindowMetrics. En Windows 7 escribo ese valor y no tiene efecto, ni siquiera reiniciando Explorer.exe.

La respuesta corta es que Windows Vista y Windows 7 no tienen en cuenta ese valor de registro. De hecho, este valor ya puede considerarse obsoleto incluso en sistemas anteriores, pues en un altísimo porcentaje de los casos ni siquiera era tenido en cuenta. A continuación paso a explicar en detalle cómo se asigna la profundidad de color a los iconos en las distintas versiones de Windows.

Cuando Windows tiene que inicializar los iconos del shell, una de las primeras cosas que hace es comprobar cuál es la configuración de profundidad de color de sistema. Esto tiene un cometido doble: Por un lado, se extraen listas de iconos de la calidad adecuada (las listas de iconos se conocen en la terminología del shell como ImageLists) y por otro lado se determina si la cache de iconos actual sigue siendo válida o no. Este es el motivo por el cual un método para regenerar la cache de iconos es cambiar temporalmente la profundidad de color del sistema.

Windows 95/98

En Windows 95/98, la profundidad de color de los iconos se podía modificar a través del valor de registro Shell Icon BPP de la clave HKCU\Control Panel\Desktop\WindowMetrics, siempre y cuando este valor de registro tuviera un valor inferior o igual al de la profundidad de color general del sistema. De no ser así, el sistema establecía como profundidad de color para los iconos unos paupérrimos 4 bits por píxel (16 colores, VGA).

Windows XP

En Windows XP, el valor de registro Shell Icon BPP tiene poca utilidad. Siempre que el sistema detecte que la profundidad de color es igual o superior a 24 bits por píxel establecerá una profundidad de color para los iconos de 32 bits por píxel (color verdadero). Así pues, el valor de registro solo tiene validez si la profundidad de color del sistema es inferior, concretamente de 16 bits por píxel, pues no puede ser inferior tampoco, porque de ser así el sistema establecerá colores VGA, independientemente de lo que le diga el valor de registro.

Windows Vista y 7

Viendo el lío que causaba entre los usuarios el establecer una profundidad de color para los iconos a través del registro y ver que el sistema no hiciera caso, Microsoft decidió restructurar la configuración de la profundidad de color para los iconos en sus dos últimos sistemas operativos, Vista y 7.

En primer lugar, el valor Shell Icon BPP no tiene ninguna validez en estos sistemas, no sirve absolutamente para nada. Si la profundidad de color general es de 8 bits por píxel o inferior (por algún desajuste en el controlador gráfico, por ejemplo), el shell extraerá iconos con una profundidad de color VGA.

Si la profundidad de color general es de 16 bits por píxel, el sistema extrae iconos con una calidad de 32 bits, siempre y cuando el usuario no exija extraer iconos con una calidad igual a la de la profundidad de color de la pantalla. Esto se puede hacer si establece un valor de registro del cual no encontré referencias en Internet pero que descubrí trazando la inicialización de la cache de iconos con el genial Process Monitor. El valor de registro es de tipo DWORD, tiene como nombre AllowLowerBppSystemImageLists y se situaría en la clave HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced (o en su homóloga en HKLM). Un contenido igual a 1 para ese valor le diría al sistema “sé que mi profundidad de color no es demasiado elevada, pero quiero que extraigas iconos con una profundidad de color igual a la del sistema, no igual a 32 bits por píxel”. Al hacer esto en teoría se ahorra una pequeñísima cantidad de memoria pero a cambio los iconos no lucirán tan bonitos como de costumbre. No es un valor de registro que le merezca la pena tocar a un usuario doméstico.

Para profundidades de color superiores a 24 bits por píxel, se predetermina 32 bits por píxel para los iconos.

Así pues, podemos concluir este artículo diciendo “Shell Icon BPP, R.I.P”.

Leave a Reply

Your email address will not be published. Required fields are marked *