Ok, printers..... For the most part it is somewhat simple to troubleshoot printers on the Windows client. But when it gets down to it, printers are a pain in the butt -  especially the support side of things. When a printer breaks, usually it is easy to decipher if the problem is related to the software installed on the computer, or a print spooler issue on the print server, or if the printer is actually broken, and the list can go on and on (you get the point). But when a printer works for everyone else but a single person, it can get frustrating.

Take this case for example:
Yesterday I had a user call the helpdesk with a complaint that they could not print to a printer on their desk. Of course, all others in the department were able to print to the printer just fine. Only this user was the one affected. The good thing about this was that the printer was actually a network printer served on our domain print server. I added the printer to my own computer so I could try to send a print job to it and sure enough, I was not able to print. My print job was in the queue but there was another print job holding up the queue (the queue was frozen). The printer had green lights, there were no error messages, it was just this one job that wouldn't print. I restarted the print spooler on the user's computer, cleared out the spooler cache, deleted all other print jobs, but this one job just wouldn't delete. I was now having the exact same issue as the user.
I pulled the plug from the printer, had my system admin restart the print spooler on the print server, and then plugged the printer back in. The print job was still spooled and would not delete. What the hell? Why won't this friggin thing work?

The end fix to this is actually simple. Delete the printer from the computer, then delete the driver from the driver pool. To do this,

  1. Delete the printer from Printers and Faxes in Windows XP, or Devices and Printers in WindowS Vista or Windows 7.
  2. While still in the Printer window, right-click and choose "Server Properties".
  3. Click the Drivers tab, highlight the driver you want to delete and click the Delete button. ***If you cannot delete the driver, you may have another printer using the driver. You will need to delete that printer as well.
  4. Re-add the network printer to the computer.

This will re-install the print driver from the print server directly, essentially reloading the driver on its own. Run a test print job.

9 times out of 10, this will resolve the issue. BUT IT STILL WOULDN'T WORK FOR THIS USER!!! Now I was really frustrated. I wasn't sure what to do. But then I remembered the ultimate workaround - add the printer to the computer as a local network printer. This completely bypasses the print server and spools the documents locally, essentially printing directly to the printer itself. If this wouldn't work, then I know that the computer would need to be wiped out and Windows re-installed.

To add a network printer as a local printer:

  1. Open Printers and Faxes (or Devices and Printers in Vista\7).
  2. Choose Add a New Printer.
  3. Choose "Local Printer Attached to this Computer" and uncheck the "Automatically Detect Plug and Play". **In Windows Vista\7, choose "Add a Local printer".
  4. Click the "Create a New Port" bullet and change the option to "Standard TCP\IP Port". Click Next.
  5. Enter the IP ADDRESS of the printer, click Next.
  6. Choose the print driver. If prompted to overwrite the current driver, do so.
    Now the printer will be added to the computer. Run a test page and verify the results.

Adding a network printer to a computer in this manner should be dealt with very carefully because you do not want to bypass network policies or rules set by the business. This is ONLY a last resort workaround to get someone printing again. If it works, great! If it doesn't, then you don't have a choice but to re-image the computer. But before you re-image the computer, you need to verify that the issue is not related to a corrupt driver :) (Meaning install the printer locally on another computer and try again....)