Printers are often difficult to manage, and no more so than in a terminal server environment. Easy Print replaces manufacturer-provided print drivers on terminal servers, giving users instant access to their local printers and improving reliability when running print jobs from a remote desktop (RDP) session.
Easy Print supports new and legacy printers without the need for the terminal server to also have the driver for the client’s local printer installed, improving the user experience by making printing from applications hosted on terminal servers more reliable.
When a user logs in to a remote desktop session on a Windows 2008 (or later) Remote Desktop Server, the server’s print spooler shows only those printers available to the user in the current session, rather than displaying local printers redirected for all users logged on to the server. This makes remote desktop session logons faster and helps ensure that print jobs are sent to the correct device.
All of a local printer’s features, which are supported by the driver installed on the client, are available in a remote desktop session. The Easy Print driver uses printer preferences saved by the user, as opposed to previous versions of terminal services where the driver installed on the server would override user preferences with factory defaults.
A new Group Policy setting allows sysadmins to decide whether only a user’s default printer is redirected to the remote desktop session, versus all printers the user has installed locally. The fallback printer driver that was included in Windows 2003, for use if a native driver couldn’t be found on the terminal server for a redirected printer, has been superseded by Easy Print in Server 2008.
The XML Paper Specification (XPS) file format and XPS print path are used in Windows to convert legacy Graphics Device Interface (GDI) print jobs to XPS, which replaces print spooler formats and page description languages, such as PCL or Postscript, so that one format is used right up to final processing by the print driver.
The print spooler in Windows Server 2008 has been updated to support both the XPS and GDI print path. If a print job is launched from a standard Win32 app in a remote desktop session, it’s converted from GDI to XPS before being processed and sent to the client via RDP. Windows Presentation Foundation (WPF) applications send print jobs in XPS format natively. If the printer attached to the client has a driver that supports XPS, the print job is passed directly to the printer. If not, the document is converted from XPS back to GDI before printing.
The key advantage of using the XPS print path is that the Remote Desktop Server doesn’t need the printer driver for the client’s local printer, as is the requirement for legacy GDI printing. As most servers are now deployed with 64-bit OSs, this is especially advantageous where 64-bit drivers are not available for legacy printers.
All the required client components for Easy Print are included in the OS, starting with Windows Vista Service Pack 1. If working with Windows XP, make sure Version 6.1 of the RDP client is installed along with the .NET Framework 3.0 SP1 or later.
On the server side, you must run Windows Server 2008 or later. Server 2008 R2 includes all the necessary components. But if you’re running Server 2008, you’ll need to install the .NET Framework 3.0 SP1 or later with the XPS Viewer feature selected. Client devices still need to have an appropriate driver for each local printer and, where possible, will need to install XPSDRV print drivers to improve performance.
Not all devices support the Easy Print driver, so check your organization’s printers and install the appropriate drivers on your Remote Desktop Servers where necessary. If it’s possible to send a print job to a redirected printer from a remote desktop session but the print is garbled or the fonts are incorrect, uncheck Enable advanced printing features on the client. Right click the printer in Devices and Printers on the Start menu, select Printer properties from the menu and switch to the Advanced tab.
Figure 1: Disabling advanced printing features on the client
To override the Easy Print drivers on the server for specific printers, create an .INF file that specifies paths to alternative drivers as shown below. Replace OEM Printer Driver Name and Windows Server 2008 Driver Name as necessary for your printers. For instance, "HP DESKJET 720C SERIES V10.3" = "HP DESKJET 722C".
;PRINTER MAPPING FILE FOR CLIENT-SIDE TO SERVER-SIDE DRIVERS
"OEM PRINTER DRIVER NAME" = "WINDOWS SERVER 2008 DRIVER NAME"
Next, add the full file path of the .INF file to the registry. Add two REG_SZ registry values, PRINTERMAPPINGINFNAME and PRINTERMAPPINGINFSECTION, to the HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\TERMINAL SERVER\WDS\RDPWD KEY USING REGEDIT.EXE. Before editing the registry, make sure you have made a full backup of your server.
PRINTERMAPPINGINFNAME should be set to the full path of the .INF file and PRINTERMAPPINGINFSECTION set to the section name in the .INF file that contains information about alternate drivers — in this case Printers. Before these settings take effect on the server, restart the Print Spooler service.
Finally, configure Group Policy so clients use the alternative printer drivers you’ve specified in the .INF file before using Easy Print first. Using the Group Policy Management Console for Active Directory, set the Use Terminal Services Easy Print Print Driver First policy to “disabled” under Computer Configuration > Policies > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host >Printer Redirection. Don’t forget to wait for Group Policy settings to update, or force a refresh by issuing the GPUPDATE /FORCE command on each client.
Figure 2: The Use Terminal Services Easy Print Driver First policy setting in Group Policy