We maintain a large server farm running Windows NT Server 4.0, Terminal Server Edition (TSE) with Citrix MetaFrame. Our users use autocreated printers to print to their client printers. What's the best way to manage the different printer drivers for all the machines?

Although TSE doesn't handle printing easily, once your setup is correct, printer management can be one of TSE's most useful features. The big chore is making sure that you have working, compatible print drivers for the printers you support and that you have the same driver versions on all machines. First, determine which printers you need to support and whether a TSE-compatible driver exists. (The Citrix and Microsoft Web sites list drivers that have known issues.)

One way to manage printer drivers is to install all of them to one source and then replicate the Registry information. To create one source for printer drivers, install the drivers on a trusted driver server and set it up for sharing. Once you've installed a driver on a x86 NT 4.0 computer of any kind, the path %systemroot%\system32\spool\drivers\w32x86\2 appears on the machine. Copy the contents of the 2 subfolder to a 2 subfolder on the trusted driver share. Next, open a Registry Editor on each print server and go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Providers\Lan

Man\Print Services\Servers. Add the value LoadTrustedDrivers, data type RG_DWORD, and give it a value of 1. In the same key, add another value, TrustedDriverPath, data type REG_SZ, and give it a value of \\servername\sharename, a value that points to the trusted server with the share in which the drivers are available. This tweak ensures that the print server can load drivers only from the location that you have specified. Just make sure the drivers stored on the driver server are up-to-date.

Each MetaFrame server needs to have the same printer information in each of following locations:

  • %systemroot%\system32\spool\drivers\w32x86\2 stores driver files
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments \Windows NT x86\Drivers\Version-2 stores printer driver Registry entries
  • HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control\Print\Printers stores My Computer printer definitions
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Providers\LanMan Print Services\Servers stores print server source information

You can replicate these entries to a common location and copy the entries to the appropriate place on each machine.

If you don't want to use one trusted source for the 2 directory, then you must install all the print drivers to one machine and copy that machine's 2 directory to all other machines in the farm. Before doing so—and before making any other changes—you need to stop the Spooler service.

You also need to replicate the Registry information from the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print subkey by copying it to each server in the farm. Don’t forget to restart the Spooler service and test your replicated printers when you're done.

Another issue to keep in mind is that Windows 9x machines won't automap if the client print driver has a name different name from that of the NT print driver. Wtsuprn.txt, which you can find in

%systemroot%\system32, tells you how to write a file that relates the Win9x name to the NT name. When you save the file as wtsuprn.inf, it cross-references the Win9x print driver and the correct NT driver so that the client can autocreate without a problem. If you add printers, be sure to add them to the wtsuprn.inf file.