Category: Printers & Printing

A Windows Print Spooler World-Shaker
article #1414, updated 140 days ago

Well, it rocked my little world. This came from the excellent Terry Powell. He had a Server 2016 machine where Explorer would crash and restart every time Devices and Printers was opened. A very large number of common fixes was tried, including four different DISM methods with SFC and others, no change, DISM said the image was fixable but nothing would fix, and the only thing clearly missing according to DISM and SFC logs was a .lnk file. Terry found a reference stating that if one clears everything here except “(Default)”:

HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Devices

and then restarts the printer spooler, all begins working well. And indeed, it appears that this is space in which bad gunk can build up! He found about 100 there, removed them, and lo and behold, all is well. Powershell code to do this:

function Remove-AllItemProperties

    Remove-ItemProperty -Name * @PSBoundParameters

Remove-AllItemProperties "HKCU:\SOFTWARE\microsoft\windows nt\currentversion\devices"

Stop-Service Spooler
Start-Service Spooler



Microsoft Printing Troubleshooter
article #1345, updated 595 days ago

Does not seem to have a web page of its own, it is linked from others:



Windows printer setup automation by script: Installation
article #1229, updated 1059 days ago

Recently there was a case where a Windows Server 2016 print server was set up, and very odd things happened vis a vis one particular large MFP: When any non-admin user changed printer settings on her/his PC only, those settings were replicated to all users on all PCs who had that printer. Microsoft printer deployment was doing it somehow; testing was done both using Print Management and the other GPO print setup method, same result. When manual mappings were used to replace the deployments via Windows Explorer, the symptom went away.

Thus the CMD script below. It can be run as administrator from a PC or remotely via psexec, or a variety of other ways. It installs the driver into the PC, and via scheduled task, any new user that logs into the PC, will have his/her own new mapping to the printer.


ECHO This script will (a) install the driver for a server-shared 
ECHO printer into a PC by UNC, and (b) set up a Scheduled Task 
ECHO to map that printer to any user at logon if they have 
ECHO permissions for that printer.
ECHO It has to be run as administrator, and it requires
ECHO two command line arguments:
ECHO first, a unique, optionally quoted, short name for the printer, 
ECHO used in the task name only; 
ECHO and second, the quoted UNC path of the printer.
ECHO If the unique name already exists in the system, 
ECHO it will be overwritten.  The short name can have no slashes.

:: 1. Get printer printer UNC path via command line.
:: 2. Install printer driver into PC.  This is done by a RUNDLL install of the printer to the administrator user,
:: and is one of two reasons this script has to be run as administrator.
:: Example:  rundll32 printui.dll,PrintUIEntry /q /in /n "\\machine\printer"
:: 3. Set up scheduled task, to be run at user logon and using user creds, to install the printer to the user profile.

:: First we do have to dequote the variables.
Set UniqueName=%~1
Set UNCpath=%~2

:: Step 1.
ECHO Printer to be set up: %UNCpath%
ECHO Using short name: %UniqueName%

:: Step 2.
:: Install the printer into PC as administrator.
ECHO Installing printer as administrator, to get driver in...
rundll32 printui.dll,PrintUIEntry /q /in /n "%UNCpath%"

:: Step 3.
:: Set up the at-login scheduled task...
ECHO Set up the at-login scheduled task...
Set RunString=%windir%\System32\rundll32.exe printui.dll,PrintUIEntry /q /in /n
echo Task will run: %RunString% %UNCpath%
schtasks /Create /F /SC ONLOGON /TN "%1" /TR "%RunString% \"%UNCpath%\""

ECHO Script completed.



Windows network printer changes in CMD
article #1026, updated 1059 days ago

Very easy:

Quietly install a network printer – per user

rundll32 printui.dll,PrintUIEntry /q /in /n "\\machine\printer"

Quietly delete a named network printer – per user

rundll32 printui.dll,PrintUIEntry /q /dn /n "\\machine\printer"

Set default printer

rundll32 printui.dll,PrintUIEntry /y /n "\\machine\printer"

Quietly install a network printer – per machine

rundll32 printui.dll,PrintUIEntry /q /ga /n "\\machine\printer"

Quietly delete a network printer – per machine

rundll32 printui.dll,PrintUIEntry /q /gd /n "\\machine\printer"

Quietly delete a specific printer driver

rundll32 printui.dll,PrintUIEntry /q /dd /m "PrinterDriver"



Get rid of the new Windows-controlled default printer setup
article #1225, updated 1065 days ago

Windows 10 has some sort of automatic thing built in which is pretended to read our minds and decide for us which of our printers should be the default at any time. Needless to say this makes no sense at all, and causes lots of user frustration. To turn this off with Group Policy, browse to:

User Configuration -> Administrative Templates -> Control Panel -> Printers

and set “Turn off Windows default printer management” to Enabled.



Windows printer management using built-in VBS scripts at the command line
article #837, updated 1264 days ago

From Windows 7 on, Microsoft has thoughtfully provided us with VBS scripts for command-line printer management, here:


In this dot on the globe, we go to the following system folder to see them all, there are several:


To delete printer named ASDF:

cscript C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs -d -p "ASDF"



Setting Up Printers by Windows Group Policy the Simplest Way
article #1113, updated 1367 days ago

There are multiple ways to set printers up by group policy in Windows. There is a printer administration role which can make things easier or harder, depending on how well everything is working. The simplest way, is to open the Group Policy Management Console from a domain controller, open up an appropriate policy, and open it to here:

then right-click in the white box, you’ll get a menu, choose “New”, choose “Shared Printer”, Action should be “Update” or “Replace” if “Update” doesn’t work, and you’ll choose the printer by “Share Path”. You can leave everything else alone unless you need something special. Sometimes it works better to do a Delete and then Create for each printer. The vagueness here is due to unknown but widely experienced vagaries in behavior of Group Policy which are addressed in no known documentation.

Please do note that we set these up under “User Configuration” not “Computer Configuration”. It is possible to do it under Computer, but removals can be far more difficult if we do, there have been messes seen.



Canon MFP User Code Printing Requires a Service
article #1071, updated 1453 days ago

If there is a Canon MFP, and the desire is to implement user codes, you need more than just a driver. You need the current UFR II sort of driver, and very significantly, you need something called the “Canon Driver Information Assist Service”. This is in the “misc” folder in the driver package, it’s called DIAS for short. This is a service which makes network user codes flow from desktop to server to MFP. Without it, you will get errors as user code lookup attempts fail.



Cannot delete printers in Vista, 7, and Above
article #691, updated 2256 days ago

If you get “permission denied” trying to delete printers, delete everything relevant in all of these places (leaving the folders of course):

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts
HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows NT\Printers\PushedPrinterConnectionStore\*
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections

restart the spooler, refresh the Devices and Printers window, and you may be done, the involved printers will probably vanish. If they don’t they will be deletable at this point. If there are multiple user profiles on the PC, you will have to delete them in the other profiles. On some machines, some of the folders won’t exist, and this is perfectly fine.



Change the Printer Spooler Folder
article #128, updated 2431 days ago

In Server 2008 R2:

  1. Click Start, Administrative Tools, Print Management.
  2. Open up Print Servers.
  3. Right-click on the server whose print server spool you wish to change.
  4. Click Advanced.
  5. Set your new folder.

In Vista/2008:

  1. Open the Control Panel.
  2. In ‘Hardware and Sound’, select ‘Printer’.
  3. On the left-hand tree menu, right click on ‘Printers’, and select ‘Server Properties’.
  4. In the ‘Print Server Properties’ window, select the ‘Advanced’ tab.
  5. Set a new path for the spool folder.