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

1.70 - Initial Release

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.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.81 - Corrected a memory/handle leak problem.

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.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.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.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.

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.

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.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.03 - Now turns on "keepalive" option by default.

2.04 - Internal release.

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.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.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.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.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.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.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.

