A. Microsoft has a utility which can add printers from the command line but its only available to OEM suppliers. Another option is by directly manipulating the printui.dll dynamic link library.
rundll32 printui.dll,PrintUIEntry \[options\]
For example to add a HP DeskJet 970Cxi on LPT1: on Windows 2000 use the following:
D:\>rundll32 printui.dll,PrintUIEntry /if /b "HP DeskJet 970Cxi" /f %windir%\inf\ntprint.inf /r "lpt1:" /m "HP DeskJet 970Cxi"
Other options are:
/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 /ga add per machine printer connections /ge enum per machine printer connections /gd delete per machine printer connections /h\[arch\] driver architecture one of the following, Alpha | Intel | Mips | PowerPC /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 /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 /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, Windows 95 or 98 | Windows NT 3.1 | Windows NT 3.5 or 3.51 | Windows NT 3.51 | Windows NT 4.0 | Windows NT 4.0 or 2000 | Windows 2000 /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 /Z share this printer, can only be used with the /if option /? help this message @\[file\] command line argument file
Examples:
Run server properties:
rundll32 printui.dll,PrintUIEntry /s /t1 /n\\machine
Run printer properties:
rundll32 printui.dll,PrintUIEntry /p /n\\machine\printer
Run add printer wizard localy:
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 %windir%\inf\ntprint.inf /r "lpt1:" /m "AGFA-AccuSet v52.3"
Run add printer wizard using inf:
rundll32 printui.dll,PrintUIEntry /ii /f %windir%\inf\ntprint.inf
Add per machine printer connection:
rundll32 printui.dll,PrintUIEntry /ga /c\\machine /n\\machine\printer /j"LanMan Print Services"
Delete per machine printer connection:
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 "AGFA-AccuSet v52.3" /h "Intel" /v "Windows 2000" /f %windir%\inf\ntprint.inf
Remove printer driver:
rundll32 printui.dll,PrintUIEntry /dd /c\\machine /m "AGFA-AccuSet v52.3" /h "Intel" /v "Windows 2000"
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,PrintUI /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