I created an HTML Application
(HTA) named Install_Printer that
makes installing printers on a
print server easy and consistent. This
HTA uses the Microsoft Windows
Server 2003 Resource Kit’s PrinterAdmin (prnadmin.dll) tool to create the
printer port, share the printer, publish
it to Active Directory (AD), and record
the printer information in the printer’s
properties page.
Here’s how Install_Printer works.
When you double-click the HTA, the
Window_Onload subroutine runs.
This subroutine checks to see whether
prnadmin.dll is present in three locations: C:\Program Files\Windows Resource Kits\Tools, %SystemRoot%,
and %SystemRoot%\System32.
When prnadmin.dll isn’t present in
any of these locations, the HTA calls
the ShowFile subroutine. This subroutine performs two tasks. First, it
prompts the HTA UI to open with the
printer driver drop-down list and the
Create Shared Printer button disabled,
as Figure 1 shows. Second, it prompts
the HTA UI to open with some elements designed to obtain the pathname to prnadmin.dll, as the bottom
of Figure 1 shows. The user can provide a pathname to the DLL by entering it or by browsing to it. Note that
the browse functionality is available
only in Windows Server 2003 and
Windows XP. After you provide a pathname and click the Continue button,
the HTA copies prnadmin.dll to the
System32 directory and uses the
Regsvr32 command to register the
DLL with the system. The HTA then
prompts the user to close and reopen
the HTA so that the printer driver
drop-down list and the Create Shared
Printer button are no longer disabled.
When prnadmin.dll is present, the
HTA creates instances of three prnadmin.dll objects. The HTA then uses
Windows Management Instrumentation’s (WMI’s) Win32_PrinterDriver
class to enumerate all the installed
print drivers on the local machine and
populate the printer driver drop-down list. (Although you can use prnadmin.dll to enumerate printer
drivers, I had some problems using it
for this purpose.) The final result is
that the HTA UI opens with the
options you need to install a printer,
as Figure 2 shows.
To install a printer, you simply
need to specify the name you want to
give the printer, provide the printer’s
IP address, and select the appropriate
printer driver. (If the driver you need
isn’t in the list, you must install the
driver and run the HTA again to have
the driver appear.) Optionally, you
can include a comment about the
printer and specify the printer’s location. This information will appear in
the printer’s property page. Although
it isn’t required to create the shared printer, it can be helpful, especially
when you manage many printers.
Note that the HTA automatically adds
the printer’s IP address and name to
the beginning of the comment line in
the printer’s properties page, even if
you don’t enter anything in the HTA’s
comment text box.
When you click the Create Shared
Printer button, the HTA uses the specified IP address to create a standard
TCP/IP port. The HTA then creates the
printer and sets several of its options,
including disabling bidirectional communication, disabling SNMP, and setting the port to TCP raw and the port
number to 9100. You can change these
and other settings. Prnadmin.dll has
numerous properties, which you can
read about in the resource kit’s Prnadmin.doc file.
The HTA creates a Web page to
show its progress. I often use this type
of progress reporting because an HTA
can’t show its progress while executing
a script because it’s in a busy state.
Having the HTA create a new window
lets the HTA post updates while it’s
executing a script. You can download
the Install_Printer.hta from the Download the Code box at the top of the Web page.
—Dave Gest
End of Article