Enabling Printing for DOS Applications within Windows XP Mode VM on Windows 7

You may find that your older DOS Applications will not work when installed on Windows 7. This can be due to a known problem on 32 bit Windows 7 according to Microsoft article 2408903 or you may be running a 64 bit edition of Windows 7.

2408903 An MS-DOS-based program that uses the MS-DOS protected mode interface crashes on a computer that is running Windows 7

https://support.microsoft.com/default.aspx?scid=kb;en-US;2408903

On Windows 7 64 bit edition, the NTVDM is not available. If you have an older DOS application which you still need to use on your Windows 7 client. You can install your DOS application within the Windows XP Mode virtual machine.

We will be focusing specifically on enabling printing from an older DOS application within your Windows XP Mode virtual machine. If you have not already download and installed the Windows XP Mode virtual machine on you Windows 7 client system. Please walk through the steps listed in the below external web page.

Download Windows XP Mode

https://www.microsoft.com/windows/virtual-pc/download.aspx

Before we start on the configuration of the Windows XP Mode virtual machine, we will need to be sure that the Windows 7 client system is configured correctly for the DOS application to print to the local printer.

First we will need to open System from the control panel and then click on “Advanced System Setting” to confirm that the Windows 7 computer name conforms to DOS 8.3 naming convention.

Naming Files, Paths, and Namespaces

https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

clip_image002

Click on the Computer Name tab and verify that the computer name is no more than 8 characters long with no spaces or special characters. If the computer is not within a domain environment make a note of the Workgroup name. In our example we are using WIN7-PC1 as the computer name and using the name WORKGROUP for the workgroup name.

clip_image004

If you made any changes to the System properties you will be required to reboot the computer for the changes to take effect.

With most locally attached printers they are installed automatically via Plug-n-Play, or you may have utilized the installation disk to install your printer. We will need to be sure the printer has been shared out correctly, to do this click on Devices and Printers from the Start Menu.

clip_image005

Once this open you can Add a printer if one has not been installed as of yet or modify the printer which is going to be used for the DOS application. In our example, we have installed the Lexmark E352DN printer. This printer is using the Lexmark’s Universal printer driver.

clip_image007

Open the properties of the printer and then click on the Sharing tab. Place a check in the box next to Share this printer, as well as enter a Share Name for the printer. Be sure to verify that the share name is no more than 8 characters long with no spaces or special characters. In our example we are using LEXE352 as the share name.

clip_image009

Once you have successfully shared out the printer. Open a command prompt from the Start menu by clicking on All Programs > Accessories > Command Prompt.

Within the command prompt type the command NET SHARE, this will display all available shares from this computer. In our example you will see all of the hidden admin shares as well as the Lexmark printer which we have just shared out.

Net share

https://technet.microsoft.com/en-us/library/bb490712.aspx

clip_image011

Now at this point the Windows 7 client has been configured correctly and the printer is available for the DOS application to use. Now start the Windows XP Mode virtual machine by clicking Windows XP Mode from Start > All Programs > Windows Virtual PC

clip_image013

Once the XP Mode virtual machine has started and you have logged onto the system. Open System from the control panel and then click on the Computer Name tab and verify that the computer is connected to the same Domain environment or Workgroup.

In our example we are using XPMODE-VM for the computer name and using the name WORKGROUP for the workgroup name.

clip_image015

If you made any changes to the System properties you will be required to reboot the computer for the changes to take effect.

From the Start menu of the XP Mode virtual machine click Printers and Faxes to display any installed printers. You will notice that in our example we do not have any printers installed.

clip_image017

From the File drop-menu click on Server Properties and then click on the Drivers tab. From here we will need to install the same printer driver as that which we are going to be using for the DOS application to print to which is installed on the Windows 7 client. In our example, we have installed the Lexmark’s (32-bit) Universal Printer driver.

clip_image019

Once this has completed please restart the XP Mode virtual machine then re-open Printers and Faxes from the start menu. You may now notice a printer has been installed. This is the re-directed RDP printer which is created by default if a compatible printer driver is available. We will not be able to use this printer for the DOS application to print to.

clip_image021

We will need to create a re-direction of the local LPTx port to the shared network printer on the Windows 7 client. Open a command prompt from the Start menu by clicking on All Programs > Accessories > Command Prompt.

Within the command prompt type the command NET USE, this will display all available connects used by this computer. In our example you will see three redirected connections to the drives (Floppy A, Local C, and CD ROM D) on the Windows 7 client.

How to Use the Net User Command

https://support.microsoft.com/kb/251394

314499 How to print to a network printer from an MS-DOS-based program in Windows XP

https://support.microsoft.com/kb/314499

clip_image023

We will need to enter a NET USE command which will redirect the shared printer on the Windows 7 client to LPT1. To do this type the following command;

net use lptx \\printserver\sharename /persistent:yes

In our example we had entered the following command which will redirect the Lexmark shared printer to the local printer port LPT1

net use lpt1 \\win7-pc1\lexe352 /persistent:yes

clip_image025

You may be prompted for a valid User Name and Password of a local user account on the Windows 7 client system. Once you have entered the proper credentials you will receive a reply stating the command completed successfully.

clip_image027

At this point everything has been setup correctly and a persistent connection of Lpt1 which will redirect to the network share on the Windows 7 client computer. Please note that when printing from DOS applications, it may take some time for the document to be printed. This is due to the multiple spooler redirections for the document from the Windows XP Mode LPT1 local port to the shared network printer on the Windows 7 client.