In "Per-Machine Printer Connections + Custom Plug-In" (May 2006, InstantDoc ID 49741), I presented a Windows Script Component (WSC), PMPMgr.wsc, and a command-line script, PMPMgr.js, that make it easy to manage per-machine printers on one or more computers. If you haven't used per-machine printers before, they're network printer connections that appear for all users of a computer. (In contrast, the Add Printer wizard adds a printer only to the current user's profile.)
The command-line script I presented in the previous article does its job well, particularly for managing per-machine printers on multiple computers, because it supports reading lists of computers and printers from text files. This is very useful when managing per-machine printers en masse; however, I found myself wanting an easier-to-use tool when I needed to manage per-machine printers on one computer at a time. To meet this need, I designed an HTML Application (HTA), PMPMgr.hta, that provides a GUI for the PMPMgr.wsc component.
Per-machine printers are very useful when you want printers to appear per-computer instead of per-user. With per-machine printers, an administrator can add printers to a computer once, and the added printers appear no matter who logs onto the computer. Because per-machine printers appear for all users that log onto a computer, they provide a number of useful benefits for system administrators:
- Per-machine printers can be managed (viewed, added, and deleted) remotely.
- Inexperienced users won't need training on how to add printers to their profile.
- It's easier to upgrade a print server because users won't need to delete the obsolete printer connections and add them from the new print server; an administrator can do it remotely.
Per-Machine Printer with GUI
As I noted in the previous article, per-machine printers are available (but nearly undocumented) in Windows 2000 and later, and leveraging them requires you to type some very cumbersome Rundll32 commands. The script component PMPMgr.wsc acts as a wrapper for the Rundll32 commands and provides an interface for scripts to easily manage per-machine printers on the local or a remote computer. The PMPMgr.hta GUI application provides an easy-to-use interface for the script component.
The PMPMgr.wsc component and its associated HTA files require Windows 2000 or later. You can download the PMPMgr plug-in by clicking the Download the Code button at the top of the Web page. Table 1 shows the files that make up the application and a brief description of each one.
To use the application, you need to perform only these three steps:
- Install and run the application.
- Choose a target computer.
- Add per-machine printers from a print server to the target computer or delete printers from the computer.
I'll also tell you how to uninstall the application.
Step 1: Install and Run the Application
To install and run the PMPMgr.hta application, first download the .zip file and extract its contents to a suitable folder on your computer. As mentioned above, Table 1 shows the files required to run the application.
If you have the older version of PMPMgr.wsc (downloaded from the article at InstantDoc ID 49741) installed on your computer, you need to unregister it before continuing to the next step. To do this, right-click the old PMPMgr.wsc file in Windows Explorer and choose Unregister. The upgraded version of PMPMgr.wsc has some improvements necessary to work with the new application. The old PMPMgr.js script will continue to work without any changes. You must be logged on as an administrator to complete this step.
Register the new PMPMgr.wsc component. To do this, right-click the new PMPMgr.wsc file in Windows Explorer and choose Register. You must be logged on as an administrator to complete this step.
Execute PMPMgr.hta by double-clicking it in Windows Explorer or typing its name at a command prompt.
Step 2: Choose a Computer
Figure 1 shows PMPMgr.hta's main window. It displays the current computer (i.e., the computer on which you installed the application) in the text box. To choose a different computer on which to add or delete per-machine printers, click the Change button and enter a new computer name at the prompt. If the application successfully connects to the computer (it checks whether the computer's print spooler service is running), it changes the current computer and updates the text box.
Step 3: Add Per-Machine Printers from a Print Server or Delete Per-Machine Printers
To add per-machine printers from a print server, click the Print Server button and enter the print server's name at the prompt. PMPMgr.hta retrieves the printers shared from the print server and adds them to the selection list in the middle of the window.
PMPMgr.hta compares the print server's list of shared printers with the list of per-machine printers installed on the current computer. Only the printers that aren't already installed on the computer are shown in the list. If the print server isn't sharing any printers, or if all of the server's printers are already installed on the computer, PMPMgr.hta will display an error message.
Select the printer(s) you want to add and click Apply. You can use the Ctrl and Shift keys on the keyboard to select multiple printers. Click the Clear List button if you want to clear the list.
To delete one or more per-machine printers from the target computer, choose Delete from the dropdown box in the top left corner of the application's window. The Print Server and Clear List buttons aren't available when you choose Delete because they're only meaningful when adding per-machine printers. The list box shows the per-machine printers installed on the target computer, if any. To delete one or more of the listed per-machine printers, select them from the list and choose Apply. You can use the Ctrl and Shift keys to select multiple printers.
Things to Know
If you want to uninstall the application, first unregister the PMPMgr.wsc component. (Right-click it in Windows Explorer and choose Unregister.) Then you can delete the application's files.
Here are some problems you might encounter when running PMPMgr.hta:
- If you get an Automation server can't create object error when starting PMPMgr.hta, then PMPMgr.wsc isn't registered on the computer.
- You must run PMPMgr.hta as a member of the local Administrators group on any computer on which you want to use PMPMgr.hta to manage per-machine printers. PMPMgr.hta will display error messages if you don't have sufficient permissions.
- If you add or delete printers while a user is logged on, the changes won't be visible until the user logs off and someone logs back on or until you restart the computer's print spooler service.
I've found that per-machine printers have solved most of my printer management problems. This script component and HTML application make it even easier to take advantage of per-machine printers on your own network.