Die Core Leute

Warning: This blog is not maintained any more (no update of content or links – as well as information are might deprecated / not valid any more).

[PRINT] Fehlender Druckprozessor bei Erstellung einer lokalen Druckerqueue in Windows XP / 2003 durch einen Druckertreiber welcher über einen Windows Druckserver installiert wurde

 

 

Szenario:

Man möchte auf einem Windows XP / 2003 lokale Druckerqueues aufsetzen indem man die Druckertreiber benutzt welche vorher von einem Druckserver durch einen Netzwerkdruckerverbindung installiert wurden.
Hier wird man festellen dass die lokale Druckerqueue mit dem gleichen Druckertreiber den WINPRINT Druckprozessor benutzen wird anstatt dem OEM Druckprozessor welcher die freigegebenen Druckerqueues benutzen.

Erklärung:

Druckprozessoren können auf Windows XP/2003 nicht mit installiert werden, wenn eine Druckerqueue über einen Druckserver verbunden wird.

Es werden nur die Binaries des Druckertreibers unter C:\Windows\System32\spool\drivers kopiert, aber der Druckprozessor selber wird nicht kopiert, da das XP Betriebssystem nicht „Package Point and Print“ aware ist.

Diese Funktionalität gibt es erst ab der Windows Vista / 2008 Generation.
Zusätzlich muss auch der Druckertreiber “Package Aware” sein (zu finden unter deren INF Datei), sonst kann das selbe Problem auch auf Windows Vista/7 Clients auftretten.

Dieses Verhalten hat auch Sinn, denn Windows XP/2003 kann kein Client Side Rendering durchführen.
Das ganze Rendering der Druckjobs wird vom Druckserver übernommen und daher ist es auch nicht notwendig dass der Druckprozessor mit auf dem Client kopiert wird.

 

Bei einer lokalen Treiberinstallation werden die Druckprozessoren unter C:\Windows\System32\spool\prtprocs\w32x86 / x64 abgespeichert.

Bei einer Druckerverbindung durch Druckserver werden die Druckprozessoren nicht mitkopiert:

Wenn man sich die Druckprozessoren eine solchen Druckerqueue unter den Druckereigenschaften anschaut erscheinen die OEM Druckprozessoren gelistet, obwohl diese DLLs unter dem Print Hive’s Registern fehlen:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers


Diese OEM Druckprozessoren sind nicht die welche auf dem Client installiert sind sondern alle Druckprozessoren welche auf dem Druckserver installiert sind. Wir sehen sozusagen ein “Mirroring” der Druckprozessoren auf dem Druckserver da das Print Rendering auf der Serverseite durchgeführt wird.

 

Beim Öffnen der Druckoptionen einer Netzwerk Druckerqueue, wird ein Call vom Client zum Druckserver geschickt um die nötigen Informationen der Druckerqueue auf dem Server zu bekommen. Daher werden diese Druckprozessor als „Mirroring“ wiedergegeben.

Leider gibt es für dieses Verhalten keine Lösung oder Hotfix, da halt das Betriebssystem dieses Feature nicht kennt um es nutzen zu können.

Daher bleiben nur 2 Möglichkeiten:

1. Druckertreiber lokal installieren, so dass auch die Druckprozessoren mitinstalliert werden.

2. OEM DLLs vom Druckserver auf dem Client kopieren und diese im Print Hive Registry registrieren:

DLLs der benötigten Druckprozessoren vom Druckserver auf dem Client unter C:\Windows\System32\spool\prtprocs\w32x86 / x64 kopieren und diese im Registry Print Hive des Clients unter folgenden Pfad registrieren:

 

HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Architecture\Print Processors


Falls man die DLLs der Druckprozessoren nicht kennt, kann man diese durch den oberen Print Prozessors Registry Key unter Driver (wie im oberen Screenshot) auf dem Druckserver überprüfen.
Größte VORSICHT bei der Architektur der DLLs und der Betriebssystem!

 

Dieser Beitrag verleiht keine Garantie oder Rechte.


Support Engineer – Platforms Core Team
Cezar Poenaru


— Disclaimer —/

This posting is provided “AS IS” with no warranties, and confers no rights.

The entire risk arising out of the use or performance of the sample scripts and
documentation remains with you. In no event shall Microsoft, its authors, or
anyone else involved in the creation, production, or delivery of the scripts be
liable for any damages whatsoever (including, without limitation, damages for
loss of business profits, business interruption, loss of business information,
or other pecuniary loss) arising out of the use of or inability to use the
sample scripts or documentation, even if Microsoft has been advised of the
possibility of such damages.
— Disclaimer —\