In Part 1, we introduced the main benefit to Terminal Services (TS) Easy Print: a “driver-less” solution for printer redirection over a TS session. In addition, several other important changes have been made to improve printing redirection performance over TS. This post lists the changes and their benefits.
Change #1: New group policy to allow the redirection of only the default printer of the TS client machine.
In the past, administrators have requested the ability to have their users redirect only the default printer on the TS client machine, and not all printers. To meet this request, we have introduced a new group policy (GP) to Longhorn Server. The GP is located under:
“Administrative TemplatesWindows ComponentsTerminal ServicesTerminal ServerPrinter Redirection”
“Redirect only the default client printer.”
By enabling this GP on a TS server, an administrator will ensure that only the TS client’s default printer will be redirected on the TS server, and not all printers.
By having the ability to allow the redirection of only one printer, administrators may now allow printing redirection — without taking the same scalability hit they would have by redirecting all printers. Also, administrators can avoid having printers installed that their users will most likely not want to use (such as the Fax printer that comes installed by default on Windows Vista).
This policy will work with connections from any version of the TS client.
Change #2: Scope of redirected printers
In Windows Server 2003, administrators could see all redirected printers of every user. Also, if a user had multiple sessions open, redirected printers of all sessions would be visible to each individual session. In Longhorn Server, this is no longer the case. The visibility of redirected printers is limited to the session where they are installed.
The behavior is very similar to the behavior of redirected drives. Printers now have the Session SID set in the list of ACLs. Properties of this change include the following.
- This ACL limits the printers from appearing in another session, even that of the same user. For example, say user1 has logged on to two different TS sessions (session 1 and session 2) on the same server. Redirected printers of session 1 will not be visible in session 2 and vice-versa.
- There are no exceptions to the above rule. By default, anyone under the “Administrators” local group also will not be able to access the printer.
- The users can change access to the printers by editing the permissions in the printer properties to be made accessible to other users.
This is a significant change from Windows Server 2003. Previously, redirected printers were visible to all sessions belonging to the same user as well as to all administrators on the server. Due to this new behavior, there has been a perceivable performance improvement in the enumeration of printers and in the logon time of new sessions.
Change #3: Per-session Default Printers
Another new feature in Longhorn Server is that the default printer is on a per session basis. In Windows Server 2003, the default printer for all sessions that share the same user was the same. In Longhorn Server, each session a user owns will have its own default printer set. Each session’s default printer is independent of any other session’s default printer, regardless of which user created the sessions.
As a result, the registry location holding information about the default printer is different. The per-session default printer is stored in the “Device” key at the registry location mentioned below. If the Device value is empty then it falls back to the per-user default printer key.
With this change to the registry location, Winspool APIs such as GetDefaultPrinter() and SetDefaultPrinter() should be used to query or set the default printer, respectively.
Change #4: Names of redirected printers are shorter.
As the screenshots below show, the names of redirected printers have changed. In Windows Server 2003, if a user redirected a printer named “Canon Bubble-Jet BJC-1000”, the TS session would display the redirected printer as “Canon Bubble-Jet BJC-1000 (from %CLIENT_MACHINE_NAME%) in session %Session_ID%”, as shown in the screenshot below.
In Longhorn Server, the TS session displays “Canon Bubble-Jet BJC-1000 (%SESSION_ID%)” as shown in the screenshot below.
The shorter name helps make the experience more seamless and makes scripting easier.