How to solve printing subsystem problems in a terminal server

    Greetings% habrausername%!

    Today I would like to share my experience in resolving printing problems on a Microsoft terminal server.

    Details under the cut.

    Instead of intro


    Surely, almost every system administrator working with Windows and, in particular, with a terminal server, faced printing problems.
    The phone is torn, everyone has the same problem: “I click on the print - nothing happens!”. We go to look at the logs and see the following picture:

    image

    Familiar? No details, nothing - guess, gentlemen, administrators! The forums on the Internet are full of questions on this topic and very few complete, structured answers. Well, let's try to heap together all the solutions.

    Reasons and Solutions


    So what could be causing this situation? Most of these situations are caused by the drivers installed on the server.

    • It must be remembered that the drivers on the clients and on the server must be identical
    • Make sure driver isolation is turned on
    • Remove all drivers on the server and try using TS Easy Print
    • Try third-party solutions


    And now we will go into more detail on all points. First, install the role of “Print and Document Services” on our terminal server.

    image

    This will allow us to conveniently manage the drivers and printers installed in the system.

    Identical drivers


    I think there’s nothing special to talk about. It is worth remembering that drivers must be taken from the official pages of the printer manufacturer. Just one more thing - PCL5 behaves most stably. If you can choose between PCL5 and PCL6, you should install PCL5 (respectively, server and client).

    Driver Isolation


    Windows 2008 introduced the remarkable ability to isolate printer drivers. Now the printer driver is not loaded by Spoolsv.exe but by the special process PrintIsolationHost.exe . When the printer driver crashes , only one instance of PrintIsolationHost.exe crashes , and the Print Manager service itself remains operational, which, as you know, greatly affects the mood of users;)

    To enable this feature, we need to open the local group policy editor ( gpedit.msc ) and go the following way: "Computer Settings -> Administrative Templates -> Printers." We find and include the following items:

    • Run printer drivers in isolated processes
    • Override print driver runtime compatibility parameter assigned by the print driver

    It will look like this:

    image

    TS Easy Print


    Apparently, having finally heeded the lamentations of system administrators, Microsoft decided to do something with the need to put the zoo of drivers on the terminal server and spoolsv.exe that crashes because of this . As a result, TS Easy Print technology was born . The key feature is that we no longer need to install drivers for each printer on the server - instead, we use the unified Remote Desktop Easy Print driver instead , so we get away from the problem of a falling spooler - after all, all printing operations are performed on the client computer.
    In order to explicitly determine what we want to use on the TS Easy Print terminal server, you must again go to the local group policy editor (gpedit.msc ) along the following path: "Computer Settings -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Printer Redirection". We are interested in the following points to be included:

    • Use Remote Desktop Easy Print Printer Driver First
    • Redirect only the default client printer

    The second item is necessary if we want the client to have only its default printer in the terminal.

    image

    Next, you need to clean our server from unnecessary printer drivers. This can be done in the manager of the role of the “Print and Document Services”.
    Carefully remove the driver! Things like the Remote Desktop Easy Print and the Microsoft XPS Document Writer must be kept alive. It is they who are responsible for transferring the print to the client.

    Now let's move on to the requirement on the client. There are only two of them - the use of the RDP protocol version no lower than 6.1 and the .NET Framework 3.0 Service Pack 1 (SP1). Nothing more is required of them.

    Third Party Solutions


    Such software as, for example, ScrewDrivers ( site ) are called to get rid of the problem of a falling spooler . It provides a client-server architecture.
    A ScrewDrivers server is a component that must be installed on the servers on which you plan to use printing in a terminal session. The ScrewDrivers client must be installed on workstations. It is this component that allows you to create virtual printers on the terminal server that correspond to the user's local printers.
    In general, it resembles Easy Print, but not for free (however, there are drugs;).

    Conclusion


    On this I want to take my leave. Perhaps the information is not complete - I will be glad to hear additions. Hope this helps someone avoid hours of hassle;)
    Good luck!

    Also popular now: