Windows 8: Cannot Connect to Printer

I have a Canon MP830 USB printer hooked up to my always on workstation at home, and this is shared so that anyone in the house can use it to print. I haven’t had any issues until trying to add the printer in Windows 8. When I tried to add the network printer:

It looks like the printer is being added ok, but then I would be given the dreaded 0x00000002 error:

This is a driver issue. But what I couldn’t quite understand is why. The drivers were all 64 bit, it’s USB … and I’ve added other printers (since I travel around) without problem. The first thing I tried to do is see if I could get the printer to work locally. I plugged the USB cable into the Windows 8 laptop, and it worked right away:

So, the driver is working locally. I tried again to add it as a network printer, thinking maybe it would use the correct driver or somehow missing the correct the driver to use, but it failed again.

The way I solved this was like so … and note, if the printer still won’t work when connected locally, this method won’t help:

Navigate to the Control Panel –> Hardware –> Devices and Printers, and select Add a Printer.

On the dialog that appears, select “The printer that I want isn’t listed” option:

And then “Add a local printer or network printer with manual settings” option:

Add a new local port:

And in the dialog that pops up, enter the network path to the printer (host name, plus the printer share name):

Now you’ll get to specify the driver to use. Windows has already installed driver because I tested the printer locally first, so I can select it right away. Otherwise, you’ll need a driver disk or can attempt to have Windows Update find it for you:

And boom, printer added:

So, why is this problem happening? I received the same error on two different machines. Fortunately because this was easily solved, I didn’t spend much time diving in. But if I had to guess, I suspect the Win8 machine asks the server for a compatible driver, and an error occurs trying to negotiate. Using this method essentially allows us to manually select the driver.