Version History
---------------

2.15 - RCP was not handling file sizes greater than 2 GB (64-bit sizes) in
       version 2.14 as was previously reported.  The code to do that was not
       enabled in that version.  It now is in version 2.15.

     - Added two registry options: ConnRecvBuf and ConnSendBuf.  These will
       tell RSHD/NT to set the TCP/IP socket option SO_RCVBUF and SO_SNDBUF
       respectively if they are found in the RSHD/NT registry options.  If
       these are not found, the NT default is used (8192 bytes).  You can set
       these to increase the TCP/IP send/receive buffers, although the effect
       will depend on your network.  They have minimal effect in our testing.
       They would affect redirected stdin/stdout for rsh and rcp copies.  They
       may be added to the Control Panel applet at a later date.

     - When running at a message level of 99, it was trying to create a file
       in the \temp directory on the current drive and would abort with an
       access violation exception if this directory did not exist and an rcp
       was executed.

2.14 - Added option to RSH service to allow a user and password to be specified
       in the RSHD/NT Control Panel applet.  If a user and password is entered,
       all programs run through RSH will be run in the context of that user.

       Note that when using this option, you MUST run the service as
       LocalSystem and check the option to allow desktop interaction.

       Also keep in mind that the specified user's "hive" is not loaded
       from the registry, so the Environment Variable File must be used
       if you need to set environment variables.

     - Corrected a problem with rcp when automatic ASCII conversion is used.
       When copying files from the NT system, if the file did not end with a
       LF or CR/LF, the last character of the file was not transmitted.

     - Corrected a problem with the usage of an environment variable file.
       If a variable substitution was fairly long (e.g. PATH=%PATH%;...)
       and the line contained multiple substitutions, it was causing
       RSHD/NT to abort with a GPF-type error.

     - Added "PATH" to the list of default internal commands.

     - Added some additional logic to try to resolve a problem where
       NT would report that a thread that RSHD/NT was using to capture
       stdin/stdout/stderr had ended when in reality the thread was still
       executing.  When this happened, RSHD/NT would abort with a GPF-type
       error.  This very rarely occurred and then only seemed to occur on
       extremely busy systems.  The change seems to have resolved it.

     - RCP server portion will now handle files with sizes greater than 2 GB.
       RCP of files with a size over 2 GB will only work if the rcp client
       (and client operating system) also supports this (i.e. it allows a 64-bit
       file size intead of a 32-bit file size).

2.13 - Only allowed environment variables of 256 bytes or less.  Increased
       to allow up to 1024 bytes per variable.

     - You can now create the following registry entry:

   \HKEY_LOCAL_SYSTEM\Software\DenicompSystems\WRSHDNT\Setup\KeyEscapeChar

       to change the default "escape" character for keystroke strings (create
       as type String (REG_SZ)).

       By default, the escape character is a backslash (\).  Any character
       after the backslash is not interpreted by RSHD/NT.  This is to allow
       you to send the characters "[" and ">", which are special inside of
       keystroke strings.  These must be prefixed by a backslash if you want
       to send them to the remote application.  This also means that you
       must use two backslashes to send a single backslash.  This can be
       inconvenient if you send full path names.  So you can set the above
       registry entry to some other character, which will be used as the
       escape character instead of the backslash.  Keep in mind that if you
       need to send the new escape character in a keystroke string, you must
       include it twice.

2.12 - Internal release.


2.11 - When checking the security file, it was granting access if EITHER
       the remote user OR the local user was given permission.  It now only
       grants access if BOTH users are given permission.

       Normally, the remote user and local user are the same (they are the
       user ID of your login on the remote system).  However, if you use the
       -l option of rsh or the user@host:file specification in rcp, the local
       user will be the login user and the remote user will be the user
       specified on the command line.

     - Was occasionally giving a GPF-type error under NT 4.0 when the
       service was stopped.  This bug was introduced in version 2.10 and
       is now corrected.

2.10 - If there is no Security File, Request Log, Deny Log, and Error Log
       specified, it will no longer look up the hostname of the client PC.
       This can speed things up, especially if using DNS and your DNS server
       is slow or is not functioning.

     - You can also disable the lookup of the client hostname by setting
       the following registry entry to "1":

  \HKEY_LOCAL_SYSTEM\Software\DenicompSystems\WRSHDNT\Setup\DisableHostLookup

       This entry may need to be added (create as type String (REG_SZ)).

       By setting this entry to "1", you can still have a Security File
       and/or log files and avoid the hostname lookup.  However, the
       logs will only reflect the IP address of clients and you can only
       use IP addresses in the Security File.

2.09 - The internal commands allowed using the "<[INTERNAL]>" rsh extension
       would not work if you checked the option to run all commands through
       the command shell.

2.08 - Now allows wildcards in the security file.  You can use "*" (matches
       multiple characters), "?" (matches a single character), "[]" (matches
       a list or range of characters), and "[!]" (matches characters NOT in
       a list or range of characters).  Wildcards can be used anywhere in
       the name or IP address in the security file.  For example, 89.5.6.*,
       joe@*.netcom.com.

     - Some internal error messages that should have been returned to rsh
       were not being returned properly.  The rsh command would report
       that the connection was reset or some other socket error.

     - Was not properly handling things when an environment variable
       file was specified, but the file did not exist.  It now does and
       uses the inherited environment when the file does not exist.

     - You can now run "wrshdnt /v" to display the current version number.

2.07 - Removed use of sockets for stdin/stdout/stderr under NT 4.0.  Now
       defaults to pipes like it did before 2.06.  For some reason, sockets
       caused problems when the program executed created its own pipes
       to other programs for stdout/stdin/stderr.  Seems to be an NT problem.

       Socket usage can be re-enabled by setting the following registry entry
       to the value "0":

       \HKEY_LOCAL_SYSTEM\Software\DenicompSystems\WRSHDNT\Setup\UsePipes

       This entry may need to be added (create as type String (REG_SZ)).

2.06 - Found workaround for NT 4.0 so that sockets can be passed as
       stdout/sterr/stdin handles.  Sockets are now used instead of pipes.

     - Corrected a problem with rcp where it would hang if you tried to
       rcp a zero-length file from the NT system with ASCII conversion
       enabled.

     - Added registry options (which must be set using REGEDT32) to allow
       disabling of the Nagle algorithm on the sockets used by RSHD/NT.
       The entries are:  ListenNoDelay, ConnNoDelay, StderrNoDelay.  Setting
       these to the string (REG_SZ) "1" will disable Nagle.  Setting to "0"
       will enable.  It is enabled by default.  The entries must be placed
       in:  \HKEY_LOCAL_MACHINE\Software\DenicompSystems\WRSHDNT\Setup (for NT)
       or:  \HKEY_LOCAL_MACHINE\Software\DenicompSystems\WRSHD95\Setup (for 95).

     - Added an option to the rsh command that allows you to disable Nagle
       for specific commands.  The option is specified like the window type
       options:  "<[NODELAY]>".  For example:

               rsh nt "<[NODELAY]>" command

2.05 - Now redirects standard input also.  Previously, it only sent
       stdout/stderr back to the rsh command.  It will now read stdin from rsh.

2.04 - Internal release.

2.03 - Now turns on "keepalive" option by default.


2.02 - Was not processing multiple environment variable files if they
       were specified.

     - Could abort on very long commands if a message file was specified.

2.01 - Uses a different method of capturing stdout/stderr under NT 4.0,
       since Microsoft decided to break the way NT 3.51 handled it.

     - Corrected a problem that could occur when an rsh or rcp was
       aborted with an interrupt key before the connection was fully
       negotiated.  It would continually attempt to establish the
       stderr channel with the now-disconnected rsh or rcp until
       it reached a certain limit.

2.00 - Capture of stdout/stderr is done in "real time" instead of being
       buffered until the end of the command.

     - RCP spoofing prefixes for Sun and VAX VMS are recognized internally,
       so they do not need to be specified in the Control Panel.

     - An incompatibility with Sun's RCP has been corrected.

     - Can specify a home directory for RCP copies.

     - Can specify an initial working directory for RSHD/NT.

     - Can specify a file containing environment variables, which will
       be set for commands execute through RSHD/NT.

     - Can specify a default command interpreter for internal commands.

     - Can specify a list of "internal" commands and the default command
       interpreter will be used for these commands.

     - Can disable rsh servicing, incoming rcp servicing, or outgoing
       rcp servicing.

     - Can limit rsh to executing a list of specified commands.

     - Can specify that the command interpreter is to be prefixed to
       every command.

     - Special commands available to shutdown or reboot the system
       using rsh.  Use:

            rsh ntsystem "<[INTERNAL]>" shutdown
       or
            rsh ntsystem "<[INTERNAL]>" reboot

       "<[INTERNAL]>" can be abbreviated to "<[INT]>".

     - If the default window type is Minimized or Hidden and keystrokes
       are specified in the rsh command, the default window type is
       overridden and the program will be run in a normal window so
       that it receives the keystrokes.

     - In the RSHD/NT Control Panel applet, you can press <F1> to view
       help on the options available.

1.91 - Was not changing time of the files created when the -p option
       of the RCP command was used to preserve file access/modification
       times.

     - Added more detailed messages at message level 4 when processing
       the Security File entries to aid in debugging.

     - The RSHD/NT setup program will now stop and delete the RSHD/NT
       service if it exists before copying files, so it is not necessary
       to stop the service before reinstalling.

1.90 - New Control Panel Applet, using tabbed dialogs for easier use.

     - The RSH command will now work for certain commands when RSHD/NT
       is running in the context of a user other than System.  It will
       allow you to run non-interactive commands only.  You cannot send
       keys to the application, unless the user RSHD/NT is running as
       is logged in on the workstation.

     - In the RSHD/NT Control Panel applet, you can now specify a user and
       password to be used for all RCP copies.  If you specify a valid user
       and password in those fields, when a file is copied from or to the
       system, RSHD/NT will log in as that user.  It will read and write
       all files as that user, so any restrictions on that user will be in
       effect when reading files.  Also, all files created will be owned
       by that user.  This allows you to run RSHD/NT as the System user
       so all features of the rsh command are available, but allows you
       to enforce security for file copies.  This also solves problems when
       accessing network drives, since the System user cannot access
       some network resources.

     - The Listen Backlog parameter now defaults to 100 instead of 5.
       Microsoft has increased the maximum limit from 5 to 100 in NT 3.51.

     - Previously, Windows NT specific errors were returned to the client
       as NT error numbers with no description.  Now, if an NT specific
       error occurs, RSHD/NT will attempt to get the error description
       from Windows NT and return the description to the client.

     - There is now an option in the Control Panel applet to disable
       the detection of "internal" DOS commands, such as DIR and TYPE.
       This is useful if you are not using the standard NT command
       interpreter and you do not wand "cmd /c" to be prefixed to these
       commands.

1.83 - When checking the Security File, the comparison of host names and
       user names is now not case sensitive.

     - If you are using a Mesassge File, RSHD/NT will now output the
       value of the PATH environment variable when RSHD/NT starts in
       the file.

     - Some changes were made that will allow RSHD/NT to service the rsh
       command in a limited manner when the service is NOT running as
       the user "System" (the default).  This user is specified in the
       Services applet in the Control Panel.

       By default, RSHD/NT runs in the context of the special user "System".
       You can change the setup to have RSHD/NT run as a different user,
       thereby inheriting the security imposed on that user.  However,
       Windows NT does not allow access to the NT desktop to any other user
       besides "System".  So, when running as a non-System user, NT creates
       an invisible desktop and runs the programs on it.  Since you cannot
       see this desktop, you will not be able to run interactive Windows
       programs through rsh if you do not run RSHD/NT as the System user.

       You will be able to use rsh to execute Console applications (and
       capture stdout/stderr) and non-interactive Windows programs.  You
       will NOT be able to send keystrokes to any programs, however.

1.82 - When reading the options from the registry (specified in the Control
       Panel), the service was requiring full access to the registry options,
       including write access, even though it did not write.  It now only
       requires read access, so if the service was originally created by an
       administrator and then changed to run in another user's context, that
       user will not need to be granted write access to RSHD/NT's registry
       entries.

     - Leading spaces in Control Panel options will be ignored.  Previously,
       if you accidentally placed a leading space in front of an option
       in the Control Panel applet, its value would be ignored by RSHD/NT.

     - You will no longer receive an "End Task" dialog box if you log out
       while a program is being run through RSHD/NT.  Previously, if a
       long-running program was run through RSHD/NT (by an rsh command)
       and the user on the workstation running RSHD/NT logged out, NT would
       display a dialog box asking if you want to wait for the task to
       end or end the task before it would allow you to log out.  (If you
       pressed the End Task button, it would not end the program however.)

1.81 - Corrected a memory/handle leak problem.

1.80 - Added ability to specify the default window type of commands run
       through rsh.  Specified in the Control Panel applet.

     - Now recognizes "internal" commands (DIR, TYPE, etc.) and prefixes
       with "cmd /c" automatically.  Previously, this had to be specified
       in the rsh command.

1.71 - Added ability to specify the IP address for listening for connections.
       This can be used if the host is multi-homed (has mulitple IP addresses)
       and you only want to listen on one.

1.70 - Initial Release of NT version.

