Monday, April 17, 2006

MS: Command Line Printer Control in Windows 2000 / XP

Many, if not all, printer settings can be done from Windows 2000's command line using PRINTUI.DLL and RUNDLL32.EXE.

RUNDLL32 PRINTUI.DLL,PrintUIEntry /?

More information is available at Microsoft's TechNet under Q189105.

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
/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, cant 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"   

Set printer port:
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Xs /n "printer" PortName "port:"   

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    

No comments: