Windows 7: Install a Network Printer for All Users

For the most part, our users rarely move to different computers so their printers are always available to them.  But we do have cases where multiple users will use a single PC.  Rather than installing printers each time a user logs on, I wanted to install them once and have them apply to All Users.

I came across this article, http://members.shaw.ca/bsanders/NetPrinterAllUsers.htm, explaining just how to to that.  It is a great tool that can install the printer remotely to any computer on the network and have it apply to All Users.

SOLUTION

1)  Open a text editor and copy the following into a new document:


rundll32 printui.dll,PrintUIEntry /ga /c\\%1 /n\\%2
start /wait sc \\%1 stop spooler
start /wait sc \\%1 start spooler

2) Save the document as C:\InstallPrinterforAllUsers.cmd

3) Next, go to Start => Run and enter the following command:


C:\InstallPrinterforAllUsers.cmd WorkstationName Server\Printer

where WorkstationName is the computer to install the printer on and Server\Printer is the Network Printer Share.

4) Press Enter

Your printer will be installed an available to all users on the PC. If you leave off the Workstation Name, the script will assume you are installing on the local workstation.

For Further Information about this command, run


rundll32 printui.dll,PrintUIEntry /?


Usage: rundll32 printui.dll,PrintUIEntry [options] [@commandfile]
/a[file] binary file name
/b[name] base printer name
/c[name] unc machine name if the action is on a remote machine
/dl delete local printer
/dn delete network printer connection
/dd delete printer driver
/e display printing preferences
/f[file] either inf file or output file
/F[file] location of an INF file that the INF file specified with /f may depend on
/ga add per machine printer connections (the connection will be propagated to the user upon logon)
/ge enum per machine printer connections
/gd delete per machine printer connections (the connection will be deleted upon user logon)
/h[arch] driver architecture one of the following, x86 or x64 or Itanium
/ia install printer driver using inf file
/id install printer driver using add printer driver wizard
/if install printer using inf file
/ii install printer using add printer wizard with an inf file
/il install printer using add printer wizard
/in add network printer connection
/ip install printer using network printer installation wizard
/j[provider] print provider name
/k print test page to specified printer, cannot be combined with command when installing a printer
/l[path] printer driver source path
/m[model] printer driver model name
/n[name] printer name
/o display printer queue view
/p display printer properties
/q quiet mode, do not display error messages
/r[port] port name
/s display server properties
/Ss Store printer settings into a file
/Sr Restore printer settings from a file
Store or restore printer settings option flags that must be placed at the end of command:
2 PRINTER_INFO_2
7 PRINTER_INFO_7
c Color Profile
d PrinterData
s Security descriptor
g Global DevMode
m Minimal settings
u User DevMode
r Resolve name conflicts
f Force name
p Resolve port
i Driver name conflict
/u use the existing printer driver if it's already installed
/t[#] zero based index page to start on
/v[version] driver version one of the following, "Type 2 - Kernel Mode" or "Type 3 - User Mode"
/w prompt the user for a driver if specified driver is not found in the inf
/y set printer as the default
/Xg get printer settings
/Xs set printer settings
/z do not auto share this printer
/Y do not auto generate a printer name
/K changes the meaning of /h to accept 2,3,4 for x86 or x64 or Itanium and /v to accept 3 for "Type 3 - User Mode"
/Z share this printer, can only be used with the /if option
/? help this message
@[file] command line argument file
/Mw[message] show a warning message before committing the command
/Mq[message] show a confirmation message before committing the command
/W[flags] specifies flags and switches for the wizards (for APW & APDW)
r make the wizards to be restart-able from the last page
/G[flags] specifies global flags and switches
w suppress setup driver warnings UI (super quiet mode)

Examples:
Run server properties:
rundll32 printui.dll,PrintUIEntry /s /t1 /c\\machine
Run printer properties:
rundll32 printui.dll,PrintUIEntry /p /n\\machine\printer
Run add printer wizard locally:
rundll32 printui.dll,PrintUIEntry /il
Run add printer wizard on \\machine:
rundll32 printui.dll,PrintUIEntry /il /c\\machine
Run queue view:
rundll32 printui.dll,PrintUIEntry /o /n\\machine\printer
Run inf install:
rundll32 printui.dll,PrintUIEntry /if /b "Test Printer" /f c:\infpath\infFile.inf /r "lpt1:" /m "Brother DCP-128C"
Run inf install (with inf dependency). In the example, prnbr002.inf depends on ntprint.inf
rundll32 printui.dll, PrintUIEntry /ia /m "Brother DCP-128C" /K /h x64 /v 3 /f "c:\infpath\prnbr002.inf" /F "c:\infpath\ntprint.inf"
Run add printer wizard using inf:
rundll32 printui.dll,PrintUIEntry /ii /f c:\infpath\infFile.inf
Add printer using inbox printer driver:
rundll32 printui.dll,PrintUIEntry /if /b "Test Printer" /r "lpt1:" /m "Brother DCP-128C"
Add per machine printer connection (the connection will be propagated to the user upon logon):
rundll32 printui.dll,PrintUIEntry /ga /c\\machine /n\\machine\printer /j"LanMan Print Services"
Delete per machine printer connection (the connection will be deleted upon user logon):
rundll32 printui.dll,PrintUIEntry /gd /c\\machine /n\\machine\printer
Enumerate per machine printer connections:
rundll32 printui.dll,PrintUIEntry /ge /c\\machine
Add printer driver using inf:
rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "Brother DCP-128C" /h "x86" /v "Type 3 - User Mode" /f c:\infpath\infFile.inf
Add printer driver using inf:
rundll32 printui.dll,PrintUIEntry /ia /K /c\\machine /m "Brother DCP-128C" /h "x86" /v 3
Add inbox printer driver:
rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "Brother DCP-128C" /h "Intel" /v "Type 3 - Kernel Mode"
Remove printer driver:
rundll32 printui.dll,PrintUIEntry /dd /c\\machine /m "Brother DCP-128C" /h "x86" /v "Type 3 - User Mode"
Remove printer driver:
rundll32 printui.dll,PrintUIEntry /dd /K /c\\machine /m "Brother DCP-128C" /h "x86" /v 3
Set printer as default:
rundll32 printui.dll,PrintUIEntry /y /n "printer"
Set printer comment:
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" comment "My Cool Printer"
Get printer settings:
rundll32 printui.dll,PrintUIEntry /Xg /n "printer"
Get printer settings saving results in a file:
rundll32 printui.dll,PrintUIEntry /f "results.txt" /Xg /n "printer"
Set printer settings command usage:
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" ?
Store all printer settings into a file:
rundll32 printui.dll,PrintUIEntry /Ss /n "printer" /a "file.dat"
Restore all printer settings from a file:
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat"
Store printer information on level 2 into a file :
rundll32 printui.dll,PrintUIEntry /Ss /n "printer" /a "file.dat" 2
Restore from a file printer security descriptor:
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" s
Restore from a file printer global devmode and printer data:
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" g d
Restore from a file minimum settings and resolve port name:
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" m p
Enable Client Side Rendering for a printer:
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" ClientSideRender enabled
Disable Client Side Rendering for a printer:
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" ClientSideRender disabled

This entry was posted in Windows 7 and tagged , , . Bookmark the permalink.

11 Responses to Windows 7: Install a Network Printer for All Users

  1. TheSegaDude says:

    I put your script to use today on four shared computers. Very handy! Thank you for the details.

  2. D.A. Mullen says:

    what about print drivers? Will this also install the proper drivers if they’re not built in to Windows 7 (e.g., Xerox global drivers, etc.)?

  3. Brian says:

    Print Drivers in our environment are loaded onto the Print Server and downloaded when the printer is installed.

  4. Anonymous says:

    Thank you so much for posting this. Your script solved my problem today.

  5. ZMan says:

    I get a “Per Machine Connection has failed” error.

  6. chad says:

    how does this work with multiple printers for all users?

  7. Donovan Oliver says:

    Do you have a solution for Windows 7 using these machine-based printer connections that are slow to enumerate those connections? They sometimes never show up under ‘Devices and Printers’ even after Spooler service restart or machine reboot.

  8. Anonymous says:

    Thanks – this worked for me!

  9. Reve says:

    how to add the computer name and printserver in the script

  10. Anonymous says:

    Worked perfect for what I needed

  11. Aron says:

    How can I reverse this? if I want to uninstall the printer? thank you

Leave a reply to ZMan Cancel reply