Winsock RSHD/NT Change Log
2.24.01 - Was not allowing an rsh if the rsh client wanted to use port 512
for the stderr connection. Many rsh commands will allow this as the stderr connection if there is no rexecd running on the client.
- Due to a change by Sun to the Solaris custom rcp command, rcp's from Solaris version "Solaris 10 6/06 s10s_u2wos_09a" would fail with a
"command not found" error. Solaris uses a Sun-customized rcp command that sends Solaris-specific file ACL's if it is communicating with
another Sun system. Sun decided to add a new custom "-Z" option to their rcp, which caused RSHD/NT to not recognize the rcp when it
intercepts the rcp to handle it internally. RSHD/NT will now handle the new solaris customizations to rcp.
2.24.00 - Added ability to kill a command after a specified period of time.
This is not an inactivity timer - it will kill the command after the specified number of seconds, regardless of what the command is
doing.
- Added ability to specify the priority of the service, the helper process, and the command executed.
- Fixed a problem with large environments (greater than 4096 bytes), where variables would be dropped from the environment created for
the command executed.
- Installer now by default sets the option to hide windows of commands. Starting with Windows Vista, this will be the only option available
because Microsoft is removing the ability for services to run commands and have them interact with the desktop.
- The uninstaller will now remove all registry entries. Previously, it left entries that were created by the control panel applet and
the service. Since they were not created by the installer, it did not know to delete them.
2.23.08 - Changed to avoid a problem that could occur with the order in which the pipes used to capture stdin/stdout/stderr where closed, possibly resulting in the truncation of output or the appearance that the rsh was hung for a period of time.
2.23.07 - It was possible that stderr output could be truncated when sent
back to the client if there was a large amount of output queued to be sent.
- If the option "Must Remote Users be Valid Users on this System?" was checked and the User Equivalency tab was used, the equivalent user
was not applied for rcp copies.
2.23.06 - Fixed problem with sorting environment variables when using an
Environment Variable File. If variables contained embedded characters other than letters or numbers (such as the underscore),
they may not be sorted correctly in the command's environment.
2.23.05 - Improved detection of process ending when capturing stdout/stderr.
2.23.04 - If files were rcp'd from the system running REXECD using the -p option
of the rcp command to preserve file modification times, the time on the files created on the destination system (where the rcp command
was issued) was off by 1 hour when standard time was in effect.
2.23.03 - A "connection aborted" TCP/IP error was occurring at random times
when data was received from the rsh/rcp client. This usually occurred when two nearly simultaneous rsh/rcp commands were received. It
would result in a "Protocol negotiation error" appearing in the RSHD error log file and a "Connection Aborted" error in the RSHD
message log file. On the client side, the rsh/rcp command would either appear hung or would time out, depending on how gracefully the
rsh/rcp command handled it. This was due to a timing problem in RSHD and has been fixed.
2.23.02 - The service was attempting to write a log file in the directory
"temp" on the C: drive upon startup, and could receive an exception
error if the directory did not exist. This was due to some trace code
inadvertently left in the release build of the software. This has been
removed.
- You can now use the string "" as the password in the automap.ini file if the user specified in the map has a blank password. Previously, you could omit the password, but that is not the same as specifying a blank password.
2.23.01 - It will no longer change the case of passwords in the automap.ini file to lower case.
2.23.00 - Added the ability to use "subst" commands in the
automap.ini file in addition to "net use" commands to map drives to
local directories. See the manual for details.
- Added command line options /m (minimize) and /h (hide) to minimize or hide the
window when running as a stand alone application using /s. The option must be
specified after /s and there must be a space between /s and /m or /h. For
example: wrshdnt.exe /s /m
- Added the ability to specify "*EventLog" for the Request Log, Deny
Log, and Error Log fields in the Control Panel applet. If "*EventLog"
is specified in these fields, the data that would have normally been written to
a file will be written to the Windows Application Event Log instead. The
Truncate button will have no effect.
- Added an option to the installer to specify whether windows of programs run
through the service should be hidden. This option has always been available in
the Control Panel applet, but it now asks for it during new installs.
2.22.02 - If a system had a Layered Service Provider (LSP) installed in
Windows Sockets, RSHD/NT could fail to service rsh and rcp commands. The Message
Log would show Winsock error 10038's when trying to read data from the socket.
2.22.01 - The correct version was not being displayed on the Service
Control tab of the RSHD Control Panel applet.
2.22.00 - It will now kill the command started if it detects that the
client has disconnected. This is to allow remote commands to be killed even when
the client does not properly send the interrupt signal (such as the native
Windows rsh command). This will only work if stdin/stdout/stderr is being
redirected and the "buffer" option is not checked. This can be
disabled by checking the option "Disable Killing Command on Client
Disconnect?".
- When the -p option was used in the rcp command on the client to preserve the
date, time, and permissions of the file(s) copied, and the files were being
copied from the system running RSHD/NT to the client, the time was sometimes off
by one hour.
2.21.03 - When running as an application (instead of a service), it would
not start if the Message Level was set to 4 or higher. Running as a service was
not affected by this.
2.21.02 - If you unchecked the "Attempt Redirection on Every
Command?" option and checked the "Wait for Command to Complete?"
option, it would ignore that and the rsh client would not wait for the command
to
complete.
2.21.01 - If a malicious (or inept) programmer wrote an rsh-like client
that sent a specific port number as the stderr port, the wrshdsp.exe process
would go into a loop for a long period, eating up CPU cycles. This is similar to
the negative port number problem corrected in the previous release.
2.21.00 - Added an option to the RSHD Control Panel applet labeled
"Always Use Remote Login as Equivalent User?". This option is a new
security feature and is used in conjunction with the User Equivalency table.
Previously, if a remote user used the -l option of rsh or the user@ option of
rcp, that user could rsh/rcp as any remote user in the User Equivalency table.
This may not be desired. When you check this new option, the override user
specified with -l (rsh) or user@ (rcp) is ignored for the purpose of the User
Equivalency table. The remote user's actual login will be used to look up the
user in the table and it cannot be overridden with -l or user@.
- If a malicious user wrote an rsh-like client that sent a negative number as
the stderr port, the wrshdsp.exe process would go into a loop for a long period,
eating up CPU cycles. This condition will now be trapped.
- Starting with version 2.20, you have the option of adding a selection to the
Start menu to run the RSHD Control Panel applet instead of using the Control
Panel. The optional program that starts the applet was remaining in memory even
after the applet was closed. It did not cause any harm in doing that - the
process was idle and took up little memory, but it was there. This has been corrected.
- Some of the .exe files and the wrshdnt.cpl file had prior version numbers
encoded in the embedded version information, so if you looked at the File
Properties in Windows Explorer, the Version tab showed an incorrect version.
This had no effect on the actual function of the software, but it has been
corrected.
- The installer was changed to that if a version of RSHD/NT prior to version
2.20 was originally installed on the system, you will not see two entries in
Add/Remove Programs and an uninstall will delete all files, including files that
are no longer included.
2.20.00 - Changed to a two-process architecture, where a new process is
started to handle each rsh/rcp connection rather than handle them with threads
inside the service. This greatly reduces the chance of any one rsh
or rcp command stopping the service and also cleans up some desktop and
windowstation resource contention issues.
- Added the User Equivalency table, allowing you to associate remote users with
Windows users/passwords. This allows RSHD/NT to impersonate a Windows user based
on the remote user (login user or user specified after the -l option in rsh) to
more closely simulate the Unix rshd. Without the User Equivalency table, all
rsh/rcp commands are executed as a single user.
- Added option to require the use of the User Equivalency table, so if a remote
user is not set up in the table, access will be denied.
- RSHD/NT will now watch for a "kill" or interrupt signal from the rsh
command on the client. If the signal is received, it will attempt to kill the
command being executed. Note that not all rsh commands pass through the kill
signal - in particular, the native rsh command that comes with Windows NT/2000
does NOT send it, so pressing Control-C when using the native NT/2000 rsh command will NOT kill the command on
the server running RSHD/NT. But the Unix rsh command does pass the signal as
does the rsh in Denicomp's Winsock RCP/RSH/REXEC for Win32 software. There is an
option on the RSH Options tab to disable the watching for the kill signal if you
prefer to not allow remote users to kill commands once they start.
- RSHD/NT will now load the profile and user-specific environment variables of
either equivalent user found in the User Equivalency table or if that is not
being used, the user specified on the RSH Options tab in the "Execute All
RSH Commands as User" field. There are also options available there to
disable the loading of the profile and user-specific environment variables.
- There is a new option that allows you to restrict all file accesses through
the rcp command to the RCP Home Directory. This can be found on the RCP Options
tab and when enabled, all files referenced in the rcp command where either the
source or destination system is the system running RSHD/NT will be relative to
that directory you specify. Note that this only affects the rcp command, not rsh
commands.
- Added new option "Wait for Command to Complete" on the RSH Options
tab. This is only available if you uncheck the option "Attempt Redirection
on Every Command". It tells RSHD/NT to wait for commands to complete before
ending the rsh on the client, but no stdin/stdout/stderr will be redirected from
the command.
- In all of the settings in the Control Panel applet that require a filename to
be specified (except the Location field), you can use an environment variable in
the name (example: %TEMP%\rshdnt.log). These variables must be available to the
service - you cannot set them through the Environment Variable File and they
will not be taken from user-specific environment variables. They are taken from the environment the
service inherits from the Service Manager. Also, you can use a variable %RSHD%,
which will be set to the directory where RSHD/NT has been installed.
- The Service Control button has been removed from the RSHD Control Panel applet
and the functions are now on a separate tab. The new Service Control tab will
also display the current service status (Running, Stopped, etc.) and the RSHD/NT
version installed.
- The Apply button is now active in the RSHD Control Panel applet, allowing
you to save changes without exiting the window.
- If you use the Edit Security button in the RSHD Control Panel applet and the
Security File does not exist, it will create the file with some comments showing
the format of the file.
- Truncate buttons have been added for each of the logs available in the RSHD
Control Panel applet to allow you to easily truncate the logs to keep them from
growing too large.
- When installing, you have the option of creating an entry on the Start menu to
get to the RSHD Control Panel applet instead of going through the Control Panel.
This is especially useful when running under 64-bit versions of Windows, since
the 64-bit Control Panel cannot load our 32-bit applet.
2.18.04 - A malicious program could connect to the service and send a
large string on the connection and cause the service to abort. It will now
prevent this from occurring.
2.18.03 - If an Environment Variable File was specified in the RSHD
Control Panel applet and the file did not exist, it could cause the service to
abort with an exception error.
2.18.02 - Was skipping the last line in the Environment Variable File, so
the variable specified on the last line was not set.
2.18.01 - The %rhost%, %luser%, and %ruser% variables were not being
evaluated properly when a RCP Home Directory was specified.
2.18.00 - Some users have reported that when two or more simultaneous rcp
commands were issued and the NT system was the source of the rcp (that is, files
were read from the NT system and transferred to the client) that the file would
be deleted from the NT system. This seems to have occurred because of some
handle contention issues
between the threads handling the rcp's and this has been fixed.
- A fix was made to prevent the service from crashing with an exception when the
NT system runs out of available TCP/IP socket resources. It should resume
working when more socket resources become available, although commands issued
during that time will not be processed.
- The RSHD Control Panel applet has been modified to prevent it from being kept
locked in memory by Windows 2000. There seems to be a bug (at least we consider
it a bug) in Windows 2000 (through Release Candidate 2) where the Control Panel
loads some applets into memory and does not release them from memory until you
log out or reboot. This only occurs when the applet is written to respond to a
certain Control Panel applet message, which the Win32 SDK documentation
recommends doing (!). If you have a previous version of RSHD/NT installed on
Windows 2000 and you re-install a later version, you may get an error about
deleting the file \winnt\system32\wrshdnt.cpl. This is because it is
locked in memory by the Control Panel. Log out or reboot, then run the install
again (NOT through Add/Remove Programs in the Control Panel) or delete that file
manually after logging out or rebooting.
- Under Windows 2000, the RSHD/NT installer will no longer put the RSHD/NT
Control Panel applet in the Windows System32 directory (\winnt\system32). It
will put it in the RSHD/NT installation directory and the Control Panel will
load it from there.
- There is a new registry option you can set (using REGEDIT) that allows you to
"throttle" the processing of rsh/rcp commands. The registry entry is:
HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHDNT\Setup\CommandThrottle
Create this as a String Value and set it to the number of seconds you want
RSHD/NT to pause before processing the next rsh/rcp command arriving. If your
system is for some reason bombarded with rsh/rcp commands arriving at the same
time and it chokes (because of limited TCP/IP socket resources for example),
this allows you to spread out the processing of the commands. Arriving requests
will be queued up by TCP/IP, up to the backlog limit (5 under NT
Workstation/2000 Pro, 100 under NT Server/2000 Advanced Server, unless modified
by setting the Listener Backlog on the Advanced tab of the RSHD Control Panel
applet). If the backlog queue fills up, rsh/rcp commands will begin receiving
"connection refused" errors from TCP/IP .
2.17.07 - Was attempting to unmap drives after each rcp command even
though no drives were mapped with AUTOMAP.INI. Reworked thread startup and
cleanup code (internal stuff). On a very few systems/commands, NT was telling us that the command had not completed even though ithad really
completed.
2.17.06 - If an Environment Variable File was specified in the RSHD
Control Panel applet and the file did not exist, it could cause the service to
abort with an exception error.
2.17.05 - The rcp command that comes with Windows NT 4.0 SP4 has a bug
that gives an incorrect "permission denied" error when rcp'ing a file
when the destination directory is "." or any time the -r option is
used. This bug could cause RSHD/NT to abort with an exception and this has been
corrected. Note that the NT 4.0 SP4 rcp command still will not work - the bug is in Microsoft's rcp command. But
RSHD/NT will not abort because of it.
2.17.04 - If a user and password were specified in the RSH User/Password
fields, it could give access denied errors when trying to use the "<[INT]>"
directive along with the reboot or shutdown commands. These internal commands
are now executed in the security context of the service startup user (usually
SYSTEM), not the RSH User.
2.17.03 - If a user/password was specified in the RSH User/Password or
RCP User/Password, a desktop resource was not being released, so eventually you
would receive an error 1816 from NT (quota error).
2.17.02 - Allows a command from rsh of a virtually unlimited size
(limited by memory). However, NT only allows a command line of up to 32767 bytes
and CMD.EXE allows only 128 bytes.
2.17.01 - Was dropping the connection if you tried to rcp multiple files
to the NT system.
2.17 - Changed the way rcp's are handled from Sun Solaris systems. In
previous versions, RSHD/NT spoofed the special (non-standard) rcp initialization
command from Solaris (/usr/lib/sunw,rcp) and ignored the non-standard ACL
records Solaris sends. Some users experienced abnormal termination of multi-file
rcp copies from Solaris systems because the Solaris system was resetting the
connection at the TCP/IP level while sending the ACL stuff. There are some Sun
documents that show this as a bug that was supposedly correct in Solaris, but
even after updating, some users still had the problem. RSHD/NT now acts like
other non-Solaris Unix systems
when servicing the Solaris rcp. When the non-standard Solaris rcp init command
is received, RSHD/NT sends back a "command not found" error. The
Solaris rcp then catches this and acts like a standard rcp.
To go back to the previous method of handling Sun rcp's, create the following
registry entry (or change it if it exists):
HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHDNT\Setup\DisableSunRCP
Create this as a String Value and set it to a value of "0" to use the
previous Sun rcp handling. Set to a value of 1 to use the new method. The
default value is "1" when the entry does not exist (it normally does
not exist).
- There are now one minute timeouts on rcp send and receive operations.
During an rcp, if no data is received in one minute or a send is not
acknowledged within one minute, it is assumed that the connection is broken and
the rcp will be terminated. Previously, the TCP/IP stack default was used. Note
that the one minute timeout is not for the entire file - it is for one individual send or receive operation within the
file. If your network is extremely slow and it possible that data cannot be sent
or received in one minute, you can increase the timeout with the following registry entries:
HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHDNT\Setup\RCPSendTimeout
HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHDNT\Setup\RCPRecvTimeout
Create these as new String Values and set them to the number of seconds required
for a timeout. Setting them to "0" uses the TCP/IP default.
- You can now set a registry option that allows you to overwrite files with rcp
if another process has them opened for reading. Normally, RSHD/NT would not
allow this because it would detect that the file was in use and return an error
to the rcp command. In our view this should not normally be permitted. However,
at times it may be desired. One example would be files used by Microsoft IIS,
which apparently caches files and keeps them open for reading while they are
cached. To allow the overwriting of files opened for reading by other processes,
create
the following registry entry:
HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHDNT\Setup\RCPAllowOpens
Create as a new String Value and set to a value of "1" to allow the
open files to be overwritten or "0" to disallow it. Keep in mind that
this only allows files opened *non-exclusively* and for *reading* by another
process to be overwritten.
- There is now a method available for more easily using network drives (and
printers) through RSHD/NT. This requires an explanation that is beyond the scope
of this document (it is fully explained in the RSHD/NT
reference manual). Briefly, you can create a file AUTOMAP.INI in the RSHD/NT
installation directory and place NET USE commands in it and RSHD/NT will map the
drives before each rsh/rcp command and unmap them afterward.
- There is a registry entry that can be set that affects the way RSHD/NT closes
TCP/IP connections. Normally, RSHD/NT closes the rsh/rcp connection gracefully
(normally). This leaves the connection(s) in a TCP/IP TIME_WAIT state (seen with
netstat). This is normal. If you create the following registry entry:
HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHDNT\Setup\KillTimeWait
RSHD/NT will do an "abortive" close and will effectively avoid the
TIME_WAIT state on the connection(s). Create this as a new String Value and set
it to a number greater than zero (0). The value used indicates the number of
seconds RSHD/NT should wait before doing the abortive close. When the connection
is aborted, it is likely that some data may not make it to the client (such as
the tail end of stdout or the end of a file rcp'd). This delay gives the data an
opportunity to reach the client before the connection is aborted. You will
experience a pause (of the number of seconds specified) after each rsh/rcp
command.
This option is UNSUPPORTED - it may or may not work for you. Use at your own
discretion.
- There is a new indicator available that allows you to tell RSHD/NT to run the
command in its own virtual Windows machine. This only affects DOS and 16-bit
Windows programs executed through RSHD/NT.
Normally, NT executes them all within a single virtual machine. If you use the
special "<[SEPARATE]>" or "<[SEP]>" in the rsh
command, it will tell Windows NT to create a separate virtual machine for that command. This has no effect on 32-bit programs. This indicator is currently
undocumented (except for here), but is supported.
- Corrected a problem with the error message returned to rcp when the disk was
full. It was incorrectly reporting an error number of 0.
2.16 - Was combining stdout and stderr onto stdout, so stderr output was
not sent back to rsh separately.
2.15 - (Interim release) Some previous versions were combining stderr
onto stdout instead of sending them separately.
2.15 - (Interim release) Added ability to uninstall from Add/Remove
Programs in the Control Panel.
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.
- 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.