Registry Tip : Running 16-bit programs in separate memory space

by Wayne Maples [Published on 20 April 2004 / Last Updated on 20 April 2004]

NT has three memory spaces. DOS programs are run in the DOS memory space. 32-bit windows programs are run in the win32 memory space. Old win3.x 16-bit programs are run in a memory space for win3.x programs. These spaces do not overlap. Anything running in one can not interfere or lock up the programs running in the other memory spaces. It mostly works very very well.

Win3.x programs use cooperative multitasking. This meant that one of these programs would run as long as it wanted and then it would let another program have the CPU ever-so-often. When these programs were well-behaved, all was OK. Unfortunately, one bad apple would upset the entire apple cart and your PC is LOCKED. NT will not let these old dogs lock your PC, but they can still interfere with each other (god forbid you are still running multiple of these old dogs). Set the program's properties to run in a separate memory space. When you click this option, NT will load each of these old dogs in its own space so they will not interfere with each other should they crash. Also this prevents one of them from hogging all the CPU allocated to the 16-bit applications.

To make this the default, cut and paste the following script into vdm.reg and run it.

REGEDIT4
BLANK LINE GOES HERE
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WOW]
"DefaultSeparateVDM"="yes"

BLANK LINE GOES HERE

See .REG files for background information on .REG files.

There is a command line option to start 16-bit applications in separate memory space:

At the command prompt simply type: start /separate c:\pathtoapp\application.exe

You can also launch the program in a separate memory space at the Run command by entering the name of the application and enabling the Run In Separate Memory Space check box. If that check box is grayed out, it's not a 16-bit app.

See Also

Featured Links