Logon Scripts and Environment Space (78358)



This article was previously published under Q78358

SYMPTOMS

Logon scripts that are set up and run properly under MS-DOS versions 4.0 and earlier may run out of environment space after the system is upgraded to MS-DOS 5.0. This problem occurs even after attempting to increase the environment space with the /E switch on the SHELL=\command.com /E:1024 /P command.

For example, even the /E:32786 setting results in the logon scripts running out of space almost immediately.

CAUSE

MS-DOS 5.0 does not manage the environment space in the same way earlier versions did. When logon scripts are enabled, a second copy of the command shell (COMMAND.COM) is started to run them, and a new COMMAND.COM uses the lower default environment space allocation. Thus, no matter what is set in the SHELL= command line, the low environment space allocation is always used. In addition to environment variables, most logon scripts contain NET USE commands (which require memory) so the environment space is rapidly exhausted.

WORKAROUND

To retain this functionality in the logon scripts under MS-DOS 5.0, use the following workaround:

    In the current logon script, echo all NET USEs and SETs to a batch file. For example:
          echo set s_user=KATHY > c:\user.bat
          echo set s_mbox=kathy, J1 >> c:\user.bat
          echo net use v: \\traveler\public >> c:\user.bat
    
    This creates the batch file USER.BAT, customized for each user when they log on. Note that the first echo line contains a single angle bracket (>), which creates the file USER.BAT. Subsequent echo lines contain double angle brackets (>>), which append the lines to the end of the newly created batch file.
    Create a generic logon batch file for the user to run instead of issuing a NET LOGON command. For example:
          net logon %1 %2
          call c:\uses.bat
          del c:\uses.bat
    
    Typing logon <user> <password> now logs on the user. The logon script creates the USES.BAT file, customized for the user. Once the logon has completed, the USES.BAT file is called and all NET USEs (and SET commands) are performed. The USES.BAT file is then removed.
To ease the administration of having additional batch files, the LOGON.BAT file can be created on the primary domain controller (PDC)then replicated with the logon scripts.

STATUS

Microsoft has confirmed this to be a problem in LAN Manager version 2.0. This problem was corrected in LAN Manager version 2.1.

Modification Type: Major Last Reviewed: 7/30/2001
Keywords: KB78358