Last month I explained the “universal” (or more appropriately “fallback”) printer driver support that was introduced with Service Pack 1 for Windows Server 2003. In that review I talked about the new fallback driver policy and its capabilities.
Today I would like to explain a bit more about the color support in the new SP1 feature. At BriForum 2005, Alex Balcanquall (a Microsoft Terminal Server product guy) gave a presentation on SP1. He talked about the "HP DeskJet 500C" and the "HP Color LaserJet 5/5M PS" as fallback drivers which of course are color drivers. But how does the system decide which driver to use when it's determines it needs to use a fallback driver?
The Fallback Process
Quite simply, the mechanism on the server that selects which fallback driver to support (the black and white "HP DeskJet 500" PCL driver or its color cousin) has to do with the physical driver name on the client side. If the client driver name contains the word “color” (or “Color”—it’s not case sensitive) it uses the color fallback driver. It uses the black and white one if it cannot find a match.
Before the days of SP1 fallback support, a Terminal Server would automatically try to install the “real” driver for a user's printer by looking for the printer driver name in a file called ntprint.inf. Not to be confused with the wtsuprn.inf mapping file, the ntprint.inf file is the file that contains the printer driver information for all the “out of the box” drivers in the drivers.cab file. If you don’t want your Terminal Server to automatically install printer drivers, a quick and easy way to “disable” this functionality is to simply rename or delete the ntprint.inf file.
However, if you use the new SP1 fallback policy to force fallback drivers to be used instead of native drivers, the color fallback mechanism will break if you’ve also disabled the server’s ability to install drivers from the drivers.cab file when it encounters a client-side driver that was installed from that file. (i.e. If you’ve renamed the servers’s ntprint.inf file then you’ll break color fallback driver support for any printer driver whose name is in that file.) In this case only the black and white “HP Desktop 500” driver will work. What this means is that the fallback driver really focuses on the third-party driver names and is not designed for the drivers that are built-in to the OS!
As for the Postscript driver, the mechanism is the same. It looks for the word “PS” in the driver name in combination with the word “color.” If it doesn’t find a match then it uses the “HP DeskJet 500” drive. If it finds a PS name match it uses the “HP LaserJet 4/4M PS” driver, and if it finds both it uses the "HP Color LaserJet 5/5M PS" driver.
The full list of drivers used by the Terminal Server fallback mechanism is:
"HP DeskJet 500"
"HP DeskJet 500C"
"HP LaserJet 4/4M PS"
"HP Color LaserJet 5/5M PS"
Preferred Fallback Driver
As you can see, this whole fallback process relies on some extensive thinking regarding color vs. non-color and PS vs. non-PS. It would be really nice if this mechanism could be forced using the Terminal Server administrator’s preferred drivers. Here’s the really great part (that even Citrix does not let us do): You can set your own preferred fallback driver!!
This is done by adding some extra registry keys to the Terminal Server which set the PCL and PS preferred drivers:
"FallbackPclDriver"="HP DeskJet 550C"
"FallbackPsDriver"="HP Color LaserJet 5/5M PS"
The above sample uses the “HP DeskJet 550C” for PCL fallback (which has my favor over the 500 as the 550C is more generic and has color support). For the PostScript printer I agree with the same choice as Microsoft, as the "HP Color LaserJet 5/5M PS" is pretty generic (but not the oldest and safest one that comes with the ntprint.inf from Windows Server 2003 CD-ROM. If you want to play it really safe, set the registry key to “HP Color LaserJet PS.”)
With can use the above option to safely hold the printer drivers on your server at a low number. (If this is your intent then be sure to also rename the ntprint.inf which will prevent unwilling native driver installations on the server while letting you have full color fallback functionality—complete with control over which driver is used.
The introduction of the color fallback driver in SP1 sets the technology on par with Citrix’s UPD-II printing. If the Microsoft Terminal Server team comes up with an EMF- or PDF-based driver for Windows Server 2003’s Service Pack 2 next year then it would fix printing problems to an ever larger extent.