Printing in MED-V is pretty straight forward. You have two options for printing from MED-V workspaces: Printing from within the guest operating system and redirecting guest operating system printer output to the host printer subsystem (local printer redirection.)
Local Printer Redirection
This is where the MED-V published application uses the MED-V Local Printer object. This is composed of a special print component that leverages its own special port (LP) that’s redirects the print job (with a default data type of RAW) to the local host. The user is then prompted to select a local printer (or a network printer the local host has configured for use.
For example, when you select the option to print from within an application that you have running inside a Windows 2000-based workspace, you will initially be prompted with the Windows 2000 Print Dialog box:
You would then select the “Local Printer” option. Once you select the Local printer option the host OS will prompt you with the Print Dialog box where you can select a printer from the host operating system.
The great thing about local printer redirection is the fact that it does not matter if the local printer is connected through a traditional LPT port, a USB port, or a network printer (TCPIP, Internet Printing, or Microsoft Network-based printer.) The Local Printer redirector will pass the print job from the guest operating system’s print subsystem into the host operating system’s print subsystem.
The components for local printer redirection will already be in place when the workspace starts for the user. When the workspace installer is run inside the Virtual PC’s guest operating system, a special port (LP port) and device driver (lp.sys) are installed.
This port is only meant to be used for redirection of printer output from the guest to the host. Even though the printer port is created on all workspaces, access to this will ultimately be controlled by the workspace policy. This option is configured under the “Deployment” tab in the “Device Control” section.
If the option “Enable printing to printers connected to the host” is not selected, you will get the following message when trying to print to the “Local Printer:”
Network Printing via the Guest Operating System:
You can bypass the local host operating system and submit the print jobs directly to network printers via the guest operating system. This is simply configuring the guest operating system to connect to shared printers or have network, TCPIP, or Internet printers installed. The print output would go directly to the shared/network printer. The option of using a locally attached printer (LPT or USB) bypassing the MED-V client is not supported.
If you are using revertible workspaces, you can pre-create these connections prior to image deployment. For persistent workspaces, you can leverage the GuiRunOnce section of the SYSPREP.INF file to set up these connections in advance of image deployment.
[GuiRunOnce] Command0="rundll32 printui.dll,PrintUIEntry /in /n \\STEVETH-SRV\HPLJ2100" Command1="rundll32 printui.dll,PrintUIEntry /in /n \\NCSCS\LM232"
You can also add in these entries from the Windows Setup Manager utility during the “Install Printers” portion of the wizard.
Here is the option using the Windows XP Setup Manager
Here is the option using the Windows 2000 setup manager:
You can also modify the SYSPREP.INF file directly for adding printers. For example, the entry listed above will be displayed as the following in the SYSPREP.INF file under the GuiRunOnce heading. This method is preferred if you want to go further in printer setup than simple connectivity to Microsoft Windows-based network printers.
[GuiRunOnce] Command0=”rundll32 printui.dll,PrintUIEntry /in /n \\STEVETH-SRV\HPLJ2100 rundll32 printui.dll,PrintUIEntry /b "HP Web Printer" /if /f %windir%\inf\ntprint.inf /r "http://STEVETH-X64/printers/HPLJ9050/.printer" /m "HP Laserjet 9050 mfp PCL 6"
For more information on how to install local printers without user interaction, please refer to the following KB articles:
KB314486 - How to add printers with no user interaction in Windows XP
KB189105 - How to add printers with no user interaction in Windows 2000
Print Driver Recommendations for MED-V Workspaces:
Since Windows 2000, Microsoft has used user-mode drivers (also called version 3 drivers) exclusively. Also starting in Windows 2000, the Microsoft Universal Printer Driver (Unidrv) was also introduced. This printer driver core replaced the Raster Device Driver (RASDD) interface used in Windows NT 4.0 and earlier versions. The concept behind Unidrv model is that independent hardware vendors are not required to write an entire driver, but instead can use the core printing functionality of the Unidrv engine and only need to provide device-specific functionality through the use of a minidriver. A minidriver is typically a customization file, or possibly a plug-in, that allows special rendering functions or customized UI options. The core printer control language (PCL) engine (Unidriv.dll) and the PostScript engine (PScript5.dll) both allow the use of minidrivers. The customization file for a Unidrv minidriver is a .gpd file, and for a PostScript minidriver it is a .ppd file.
Windows includes drivers for most of your common print devices however considerable changes in print devices have occurred from Windows 2000 to Windows 7. These so-called inbox drivers available will vary depending on the host and guest operating systems being used. Although these standard print drivers are adequate for the majority of corporate printing devices, printer manufacturers may choose to make their own drivers available to customers instead of using Unidrv. These drivers are often referred to as monolithic, because they are not implemented as UniDrv minidrivers. (Many manufacturers are beginning to develop all of their drivers using the UniDrv model rather than the traditional monolithic model.)
MED-V supports all of the following types of printer drivers for local printer redirection:
Known Issues Relating to Workspace Printing in MED-V 1.0 SP1
You may run into some exceptions with some specific printer models and some 3rd-party software that is often bundled with printers.
Issue: Printing Yields No Output (Windows 2000 Guests only)
Symptoms: There is no output at all or blank pages may print from the print device even though both the host and guest operating system reveal no errors. You may find this happening on a lot of newer multi-functional high-end printers (i.e. Xerox WorkCenters, some Lexmark’s, etc.)
Workaround: Share the host printer as a network printer assuming there is Windows 2000 support for the printer. Then connect via the network from inside the guest to the shared host printer.
Issue: Adobe Printing yields no Font Rendering (Always on Windows 2000 and occasionally on Windows XP)
Symptoms: While graphics may print fine, ATL fonts from Adobe documents do not render properly.
Cause: Known issue with MED-V Host Printer redirection.
Workaround: Share the host printer as a network printer assuming there is Windows 2000 or Windows XP support for the printer. Then connect via the network from inside the guest to the shared host printer.
Issue: Printer Alignment Issues: (Happens on both Windows 2000 and Windows XP)
Symptoms: On certain HP LaserJet Printers, printing alignment may be off.
Issue: Random Printer Errors: (Happens on both Windows 2000 and Windows XP)
Symptoms: You get a errors that vary depending on the printer model and software being used with the printer.
Cause: 3rd-Party Print Subsystems
Resolution: Attempt to locate an inbox driver or a monolithic or universal print driver for the print device.
Steve Thomas | Senior Support Escalation Engineer
Is it possible to attach a parallel port dongle to the host machine and be able to communicate with it within the medv environment?
Ben, MED-V uses XP mode, which doesn't support parallel port redirection; which stinks because supporting old stuff is what MED-V is supposed to be about. Not sure why they bothered with COM ports and stopped short of LPT.
Thanks Mike - Microsoft really pulled the wool over on this one.