Error win32spl.dll, no permite imprimir

Llevo luchando contra este problema desde octubre del 2021. En esas fechas Windows actualizó su dll win32spl.dll y dejo de permitir la impresión en unas impresoras determinadas, éstas impresoras van asociadas a un Fiery que es el que gestiona colores, tamaños y demás parámetros de la impresión.

Hasta el día de hoy lo logré solventar creando un script para sustituir la dll de cada actualización por la dll que funcionaba. La última dll que me ha funcionado has sido de octubre del 2021. El tema del script y la dll buena está detallado más abajo.

Hoy he logrado descubrir cual era el problema y como solventarlo. Por seguridad, esta dll desde esas fechas prohibe el envío de datos si estos provienen de un puerto «Local Port». Nosotros usabamos Local port porque teníamos que indicarle a que cola enviamos cada impresión, si queremos imprimir directamente sin retocar nada, pues lo mandamos a la cola «print, si queremos ajustar algún parametro, lo mandamos a la cola «hold» y de esta manera podiamos crear en la configuración del puerto de la impresora como Local Port con la ruta \\192.168.1.23\print o \\192.168.1.23\hold según fuese a una u otra cola.

La solución ha sido crear, con la ayuda de un técnico que por fin nos ha prestado la ayuda necesaria, un puerto TCP/Ip que nos permitiese indicar el nombre de cola (la configuración por defecto, no muestra el nombre de cola)

Ahora a la dll en cuestión no le sienta mal que enviemos datos a esa cola y nos deja imprimir, por fin se ha solucionado nuestro problema con los Fierys y la dll win32spl.dll

El script que he utilizado hasta ahora ha sido el siguiente:

net stop spooler
timeout /t 5 /nobreak
del /Q /S /F C:\Windows\System32\spool\PRINTERS\*.*
Takeown /F "C:\Windows\System32\win32spl.dll"
icacls  "C:\Windows\System32\win32spl.dll" /inheritance:e
del /Q /F C:\Windows\System32\win32spl.dll.vieja
ren "C:\Windows\System32\win32spl.dll" "win32spl.dll.vieja" 
copy  C:\Windows\System32\win32spl.dll.buena C:\Windows\System32\win32spl.dll /Y
net start spooler
timeout /t 5 /nobreak
pause

Y la dll que ha funcionado hasta el día de hoy, tanto en windows 10 como en windows 11 la dejo aquí compartida:

win32spl.dll del 15/09/2021 verisón 10.0.19041.1237

Espero que este autopost os ayude como a mi  😉

Permitir resolución externa de un dominio local en Bind9 con dnssec validation

Esta mañana al actualizar Zentyal a la versión 8, me he dado cuenta que viene activado por defecto con DNSSEC, cosa más que recomendable. El problema ha venido cuando el sistema tiene que resolver DNS de nombres de dominio «inventados».

En mi caso bind9 está configurado para enviar a un Pi Hole todas las direcciones que no puede resolver y es en PiHole donde creo las resoluciones locales. El problema de DNSSEC actvado como auto es que no permite la resolución de nombres de dominio no legales, dando error en el log:

insecurity proof failed resolving 'tld1.inventado/NS/IN': 192.168.1.13#53

Para permitir este tipo de resoluciones debemos activar la excepción para el dominio insertando en /etc/bind/named.conf.options la siguiente linea debajo de dnsssec-validation auto;

validate-except { "tld1.inventado"; "tld2.inventado";};

De esta manera quedará todo de forma correcta y cuando queramos resolver maquina.tld.inventado nuestro servidor contestará OK.

Espero que os valga este auto recordatorio.

 

Error «no such file or directory /etc/apt/apt.conf.d/20auto-upgrades» al actualizar Zentyal 7.1.1 a 8

Hoy he tenido que actualizar Zentyal de la versión 7.1.1 a la versión 8, no es un cambio simple, cambia la distribución de Ubuntu, de la 20 a la 22.04.4 LTS.

El error que arroja el sistema al instalar zentyal-core es el siguiente:

no such or directory /etc/apt/apt.conf.d/20auto-upgrades

El problema lo da porque no tiene instalado el paquete unattended-upgrades y no lo podemos instalar porque el paquete zentyal-core da un error, la solución es «enmascarar» el servicio que necesita zentyal-core para poder instalarse y saltarnos la dependencia, una vez hecho seguimos con los pasos que da la guía de actualización de Zentyal

Para arreglarlo he realizado los siguientes pasos:

touch /etc/apt/apt.conf.d/20auto-upgrades
systemctl mask unattended-upgrades
sudo dpkg --configure --force-confdef -a
systemctl unmask unattended-upgrades
apt install unattended-upgrades

Con esto he logrado arreglarlo y respirar…

Espero que a alguien le valga