How do I?: Share a printer from WS2008 R2 to x86 clients (or, All printers should die in a fire.)

Of all the scenes in Office Space, this is probably the most iconic for IT professionals. We have all dealt with printers, and we all hate them. We’ve all wanted to do this at some point, and it seems that no matter how far technology advances, printers never fail to provide an IT professional the opportunity to hate them anew.

At my day job we recently replaced two aging plotters (a plotter is just a really big printer), with the “new hotness” plotter: the Xerox 6279. It looks nice, it’s got lots of features, but underneath it all, it’s still just an overgrown printer.

The CAD group made the decision on which plotter to buy, I only had two requirements:

  • It must support Windows Server 2008 R2.
  • It must be a new model (no “discontinued model” specials).

I really only care about the first requirement, but I don’t want to have the thing be obsolete (read ludicrously expensive to repair) in six months. So the Xerox rep assures our CAD group that the plotter is WS2008R2 compatible, and they buy it.

What he meant to say is that it is engineered for WS2008, but will work on WS2008R2. Since the CAD group are all on Windows 7 x64 machines, no problem getting them up and working with the new plotter. Unfortunately a couple of our Project Managers need access to the new plotter as well, and this is where things start to go awry. See our Project Managers are on Windows 7 x86 machines. And since Xerox did not write drivers for WS2008R2 (they were written for WS2008, and they even have an x64 driver), the driver does not support this correctly.

But I don’t blame Xerox for this (well not totally), I also blame Microsoft. See this should be a fairly simple operation, which goes something like this:

  • On the Print Server, open Start > Administrative Tools > Print Management
  • Right click the Shared printer
  • Select the Sharing Tab
  • Click the Additional Drivers… button
  • Check the x86 checkbox
  • Click the OK button

Windows will prompt you for the location of the driver, you select it, and you’re off to the races.

Not so much if you are doing this on Server 2008R2, using a driver that was not written specifically for Server 2008R2. After you point the wizard at the correct driver it asks you for ntprint.inf, but you won’t find it on WS2008R2.

Why? Because Windows needs the x86 version of the ntprint.inf file. And it doesn’t exist on Server 2008R2 (this is where I blame Microsoft).

Really Microsoft? Is it so hard to include a tiny (10KB) INF file somewhere in the OS?

So what’s the solution? Well Microsoft’s official solution is to do one of two things:

  • Install the printer driver locally on one client (which should allow the print server to upload the correct driver automatically)
  • Copy the ntprint.inf file from a 32 bit version of WS2008 (because everyone has one on their network amiright?) to the WS2008R2 print server.

The first option will work, but it’s not as straight forward as Microsoft would have you believe. Most of the time it doesn’t work automatically, and you have to export the driver, and then import it on the print server (which works approximately 50% of the time). Most frequently, you end up having to install the printer driver on each x86 client, because it just seems faster (if you only have one or two x86 clients, it may be initially faster to do it this way, but otherwise, or over time it’s not).

The second option is the Least Amount Of Administrative Effort, but what if you don’t have a 32 bit WS2008 install? You can also useĀ  WS2003 (if you have one of those in 32 bit).

If you don’t have either, you can use method one, or you can install the WS2008 32 bit version trial in a VM. Seriously, this is the easiest way. I know this seems like it will take longer than installing the printer driver on the client machines, but remember you only have to do this once (as long as you keep the files we’re going to copy out of the OS) and then you use these files for any printer you’ll share from WS2008R2 with x86 clients.

Once you have a WS2008 x86 instance, navigate to C:\Windows\System32\DriverStore\FileRepository, and find a folder labeled “ntprint.inf_x86_neutral_xxxxxxxx” (the last string will be a random hex string). There may be more than one. Copy them all to a network share, or somewhere on the WS2008R2 machine.

When the WS2008R2 Print Management Additional Driver wizard asks you for the ntprint.inf file, point it to one of these folders, and it should find it in one of them.

You can now successfully install the network printer on x86 clients.

Or you could just get a bat and some friends to help you fix all your printer problems. Permanently.

%d bloggers like this: