Cadzow Knowledgebase


Welcome
Contact Us
Professional
Services

Consulting
Knowledgebase/
Site Search

Remote Support

Print Friendly

Issues running MS-DOS/16-bit Windows applications under Windows 2000/XP

Migrated Windows 9x Settings

Windows 9x systems upgraded to Windows 2000/XP or above may exhibit strange behaviour when running 16-bit MS-DOS applications. This is because settings from CONFIG.SYS and AUTOEXEC.BAT are migrated to CONFIG.NT and AUTOEXEC.NT and those settings almost certainly are no longer relevant.

Windows NT/2000 and above do not parse the contents of C:\CONFIG.SYS and C:\AUTOEXEC.BAT (except some environment variables). Instead, %SystemRoot%\System32\CONFIG.NT and %SystemRoot%\System32\AUTOEXEC.NT are used to customise the Virtual DOS Machine (VDM) environment. However, the default settings are usually suitable and do not need to be enhanced with older commands suited for Windows 9x.

Remove the old, unused commands from CONFIG.NT and AUTOEXEC.NT. It is not necessary to reboot because CONFIG.NT and AUTOEXEC.NT are parsed each time a new Virtual DOS Machine is launched.

Large Environment Tables

MS-DOS introduced the environment table, an area in memory where values can be stored to be used by programs. This enabled different settings to be used in different scripts or on different machines to customise the behviour of a program. To set an environment variable, you would type a command similar to:

SET USERID=DARREN

The environment table occupied a fixed portion of memory that needed to be manually expanded if you had a large number of environment variables. The environment table functionality was carried forward into Windows 9x and Windows NT/2000 and beyond. However, in the case of Windows NT and above, the environment table automatically expands to accomodate the variables assigned. Windows NT and above also define a very large number of predefined environment variables.

Normally the number of variables in the environment table is not an issue because values are only fetched when required and not stored. However, some MS-DOS and 16-bit Windows programs preload the environment table and therefore fail because it is too large. In this case it is possible to customise the environment for that program to clear all unused variables before launching the program, thereby decreasing the size of the environment table. (NB. In Windows NT and above, each process has its own environment table; inherited from the spawning process. Therefore it is possible to modify the environment table radically for a single application without ill-effect.)

The most convenient way to handle this is to put the program in a script with the commands to shrink the environment table and then make a shortcut to the script. For example:

@ECHO OFF
SET APPDATA=
SET CLASSPATH=
SET DFSTRACINGON=
SET FP_NO_HOST_CHECK=
SET HOMEDRIVE=
SET HOMEPATH=
SET LOCALAPPDATA=
SET LOGONSERVER=
SET OS=
SET PATHEXT=
SET USERNAME=
SET USERPROFILE=
SET ALLUSERSPROFILE=
SET CommonProgramFiles=
SET COMPUTERNAME=
SET DiskeeperIcon=
SET NUMBER_OF_PROCESSORS=
SET PKTMP=
SET PROCESSOR_ARCHITECTURE=
SET PROCESSOR_IDENTIFIER=
SET PROCESSOR_LEVEL=
SET PROCESSOR_REVISION=
SET ProgramData=
SET ProgramFiles=
SET PUBLIC=
SET QTJAVA=
SET SESSIONNAME=
SET TMP=
SET USERDNSDOMAIN=
SET USERDOMAIN=
SET TEMP=C:\WINDOWS\TEMP
C:\APP\PROGRAM.EXE

Other Resources

Copyright © 1996-2018 Cadzow TECH Pty. Ltd. All rights reserved.
Information and prices contained in this website may change without notice. Terms of use.


Question/comment about this page? Please email webguru@cadzow.com.au