Quick Fix: x64 printing on an x86 (32bit) PC NTPrint.inf
October 1, 2013 1 Comment
Just a very quick post, i was installing a new x64 Windows 7 machine today, and needed to install a shared printer from an x86 Windows 7 pc. I could only download a generic x64 bit driver for the printer which we will get to in a moment, but first let’s remember that we need to install the x64 driver, on the 32bit pc first.
I am going to use x86 or 32bit interchangeably, so try to keep up!
I found the relevant driver from the manufacturer website, and downloaded it. When adding that as an additional driver, through Devices and Printers (print server properties), it was asking me to locate ‘ntprint.inf’ from the Windows x64 media.
I searched a Windows DVD but no dice, i looked on Google and the suggestions i found were to copy that file from another pc. I tried that.
(to get to print server properties, first select a printer, then see the option appear on the menu bar. Inside here switch to the Drivers tab to add additional drivers)
I found on my source x64 pc that in the c:\windows\winsxs folder there were a number of folders named amd64_ntprint.inf_31bf3856ad364e35_6.1.7601.17514_none_9926a270d1526b79 or similar. Inside one of these folders you will see ntprint.inf
When i copied this single file to the x86 pc and used that, i simply got an error that it could not complete with a code of something like 0×000002.
Searching on that code, it is a ‘file not found’ error. So i decided to copy the entire folder that contained ntprint.inf across, you want one that looks like this..
If you copy that whole folder across, and again point to the ntprint.inf file it should install your x64 driver onto the x86 pc.
Now that is all well and good, but on this particular system, there was a true 32bit driver available for the printer, but only the generic driver for x64.
That would mean that when trying to add the printer to the x64 machine, it would look for a 64bit equivalent of the true 32bit driver. That might be difficult to follow, what i mean is this..
Let use an HP LaserJet 3050 as an example.
On my windows 7 x86 machine i install and share the LaserJet as HP LaserJet 3050, the driver in use is named ‘HP LaserJet 3050’ and the code inside the file designates it as a 32bit driver. Now i come along with my x64 bit pc, and try to install it as a network printer.
My x64 bit machine will attempt to locate a driver called ‘HP Laserjet 3050’ that is coded for x64 bit use. It will fail, because there is not one.
If i visit the HP website and download the Generic HP Driver for 64bit, lets call that ‘HP Generic Driver’ and install that on to my pc, you might think that will be enough to make my 64bit pc work. Wrong.
I need to also download the ‘HP Generic Driver’ for 32bit machines.
I then install both the x86 and x64 versions of the generic driver on the x86 pc. I can then add a second ‘printer’ pointed to the same print device (physical printer is a print device, printer is a piece of software in use on the pc) on this second printer i use the HP Generic Driver. I can then share this as HP Laserjet 3050 x64.
You could chose to simply change the driver being used by the first ‘printer’ however you would then have to go around to each pc and make sure they were still working, or reinstall them. Whereas adding a second printer identified for x64 use seems simpler to me.
When i try to add this on my x64 machine, it can indeed find the HP Generic Driver and the install is successful.
In future any new x64 machine will be able to install this printer with no additional effort.