Install Print Driver For Mac On Rds Server

Terminal server lets you install QuickBooks Desktop on a central server instead of individual computers. Once connected to the server, multiple users can access the company file on a remote computer. Phone support is provided for QuickBooks Desktop Enterprise Solutions only, however the following system-related issues are not supported. On your Mac, choose Apple menu System Preferences, then click Printers & Scanners. Open Printers & Scanners preferences for me. Select your printer in the list, then click the Remove button. Click the Add button, and if a pop-up menu appears, choose Add Printer or Scanner. A dialog appears listing any IP, shared, and Open Directory printers on your local network.

I am an administrator for a dual-platform school district (elementary and middle schools). We run both AD & OD, and all of our Mac's are bound to both AD & OD. Our users authenticate to Active Directory. My issue is printing from our Mac's (MacBooks to be precise). Currently, all of our PC's are printing to a Windows Print Server (Server 2003). When setting up printing on our Mac's, we use IP printing. We use IP printing because when we attempt to install printers via Windows printing, it requires authentication when printing (which I don't understand, since the users is already authenticated to the domain). The real issue is this. Because our Mac's use IP printing, the print queue is local to the machine. So, if anything impedes the print job, it pauses the printer, and in our environment, the only way to un-pause the printer and the local print queue is to log in as the local admin, clear the queue, and un-pause the printer. This is a PITA. I need to find a stable printing environment for our Mac's, and I would prefer to use our existing Windows Print Server.
Does anyone have any experience in having Mac's print to a Windows Print Server, without having the authentication issue?? I have heard of third-party products such as PaperCut, but I really don't think that's necessary for what we are trying to do.
Any help would be greatly appreciated.
Thank you in advance.
--Russ

17' MacBook Pro, Mac Pro, Intel Mac Mini, Mac OS X (10.6.3)

Posted on

Today we’re going to go over a quick method to deploy print queues and printer drivers to multiple machines when other deployment methods, including deploying via GPO are not feasible. We’re going to use PsExec from Windows SysInternals in combination with some PrintUI.DLL commands. If you’re not familiar with PrintUI.DLL, it is the file that contains the different functions used by the printer configuration dialogs. So without further ado, let’s get started …


The first thing we need to do is determine what systems we want to push the printers and drivers to. In our example, we’re going to create a local folder on the C: drive called DEPLOY. Inside the C:DEPLOY folder, we create a simple text file with a list of the machines – one per line. If you’re comfortable with scripting, the odds are that you’ve used a file like this in your scripting adventures. We save the file as COMPUTERS.TXT. The file itself looks like this:



Once we have our list of systems, we set it aside and compile our list of print queues and printer drivers that we want to create on our target machines. For this, we’re going to create a file called PRINTUI.CMD in our C:DEPLOY folder. For each printer or driver we want to deploy, we create a corresponding line in our PRINTUI.CMD file – for example:


RUNDLL32 PRINTUI.DLL, PrintUIEntry /ia /f %windir%infntprint.inf /m “HP LaserJet 4”


Let’s break down this command and look at each piece of it:



  • /ia – install a printer driver using a .inf file

  • /f [file] – either .inf file or output file. When adding in-box drivers, use ntprint.inf as in our example above

  • /m [model] – printer driver model name. In our example, we’re specifying the HP LaserJet 4

Digressing for a moment, if we were going to use PrintUI.DLL to install a local printer, our syntax would look like this:


RUNDLL32 PRINTUI.DLL, PrintUIEntry /if /f %windir%infntprint.inf /b “Printer1” /m “HP LaserJet 4” /u /r “LPT1:” /Z


Os x 10.11 4 download. Let’s take a quick look at some of the differences in our syntax:



  • /if – install a printer driver using a .inf file

  • /b [name] – base printer name. In our example, we are calling the printer “Printer1”

  • /u – use the existing printer driver if it is already installed

  • /r [port] – port name – in our case LPT1

  • /Z – share the printer. You can only use this switch with the /if option

If we add the /y switch, we can specify that printer as the default printer


Getting back to our deployment scenario, we’re going to deploy a locally attached HP LaserJet 4 printer to each of our target machines with the following settings:



  • Printer Name = Printer1

  • Port = LPT1

  • The printer must be shared out

So, within our PRINTUI.CMD file we have the following entries:



Note: The first line is not actually required in our example, but we left it in our example to demonstrate how you can use the command to deploy drivers. The printer driver itself is installed in the second line with the /m switch that looks inside the ntprint.inf file to find the HP LaserJet 4 driver.


Now that we have our list of computers, and we know what the requirements are for the remote machines, we’re ready to use PsExec to carry out our deployment. The syntax for this command is:


PSEXEC @C:DEPLOYCOMPUTER.TXT –i –n 20 –u DOMAINUSER –c C:DEPLOYPRINTUI.CMD


There are some new pieces of syntax here – let’s examine them:



  • @file – directs PsExec to run the command on each computer listed in the specified text file

  • -i – run the program so that it interacts with the desktop of the specified session on the remote system. If no session is specified then the process runs in the console session. We include this option so that we can see any errors the process might generate on the remote system

  • -n – specifies the timeout in seconds for remote computer connections

  • -u – specifies the user name to use when connecting to the remote system

  • -c copies the specified program to the remote system for execution. If you omit this option, the application must be in the system’s path on the remote computer

The PsExec command copies our PRINTUI.CMD file to the remote systems and carries out the PrintUI.DLL commands. There are some caveats to this method. For example, the name of the printer driver may vary depending on which edition of Windows you are deploying the printers to. Thus you need to verify that the actual driver name is the correct one. Refer to the PsExec help and PrintUI.dll reference guide for more options on configuring the target printers.


Finally, PrintUI.DLL commands are flexible and can allow for some odd configurations that are rarely seen. Although it is possible to add per-machine printer connections using the /ga switch, this can result in some unpredictable printing behaviors and is not recommended. And with that, we have reached the end of our post. Thanks for stopping by!


Additional Resources:






– Sumesh P.


Share this post :