The server has the Remote Desktop Session (RDS) Host role installed.
Users are connecting to the RDS Host remotely using Remote Desktop Connection or another third-party remote desktop connection application.
Network printers have been installed manually via Point and Print or they are assigned automatically to users during logon by an application or script which is using the PrintUI command as noted below:
rundll32 printui.dll,PrintUIEntry /in /n\\<IP Address or Server Name>\ShareName
In this scenario, you may see the Print Spooler service (spoolsv.exe) consuming 100% CPU utilization on one processor during the installation of the printer driver for each printer queue being created as the user logs onto a server with their Remote Desktop Connection. Once the network printer has been installed for the user and the connection is maintained this problem may not be as noticeable.
Note: This issue is more evident if the RDS Host server is a Virtual Machine (VM) running on a Virtual Server and the virtual machine settings have allocated only one CPU for the VM.
This is due to the Point and Print printer connections using Package-Aware print drivers.
By using a Package-Aware driver on a RDS Host server instead of using TS Easy Print, additional overhead will be generated when installing the network printer. This overhead manifests as high CPU usage and high disk I/O due to the driver package being downloaded to the client and expanded. At that point, the expanded files are parsed to see if any of the files are new to the system or are updates to existing files. This is done for each new print connection and for any existing connection that has been updated on the print server.
This is the expected behavior when adding a network print connection which utilizes a Package-Aware driver. You may experience this behavior even if the same print driver has been previously installed for another printer via Point and Print or as a local printer.
This behavior can be mitigated by installing the following hotfix: