WinVNC Version History Version 3.3.7 (RealVNC Version 3.3.7) Changes from 3.3.6: Removed use of Win32 HRGN API completely. Regions are now implemented using the X11 region code, nobbled just enough to build properly. Fixed a memory leak in the Win32 HRGN API, just in case it ever gets fixed. Changed the VNCHooks defaults to use deferred updates, and to hook key press events - may cause performance issues and ActiveX issues, but they are the best settings for most systems. Fixed a bug in the processing of passwords supplied in the Properties dialog that affected use of Latin-1 characters with ASCII codes of 128 or above. Version 3.3.6 (RealVNC Version 3.3.6) Changes from 3.3.5: The WinVNC service helper now attempts to contact the server for up to a minute, to cope with users logging on to XP machines before the service has had a chance to start. Avoids the tray icon not being shown. When run as an application, WinVNC will always display the tray icon. Renamed omnithread2_rt.dll to othread2.dll to work around a problem with the InnoSetup installer. Added concurrency-protection around all uses of Win32 HRGN API routines, to avoid a possible bug in the Win32 API when used by multi-threaded programs. Clipboard contents are now sent to clients even if no graphical updates are available. Advanced VNCHooks.dll settings can now be specified on a per- machine basis, not just per-user. Fixed rare condition in VNCHooks.dll that could prevent user profiles from being unloaded correctly. Fixed timeout bug in HTTP server. Version 3.3.5 (RealVNC Version 3.3.5) Changes from 3.3.4b1: A race-condition when first configuring the server has been fixed. The password field in the Properties dialog is now handled better. Active Desktop backgrounds can now be handled by RemoveWallpaper. Mouse wheels are now supported. The Add New Client dialog now accepts specifications of the form : or :, to allow listening viewers to be used that are listening on ports other than the default. The AllowEditClients registry option is used like AllowProperties, and allows VNC to be configured not to show the Add New Client or Kill All Clients menu items in the tray icon menu. Implemented the -reinstall option, which unregisters the WinVNC service if registered, then re-registers it. Fixed bug in fast blit code when pixel format changes from one supporting fast blits to a munged format. Version 3.3.4b1 (RealVNC Version 3.3.4, Beta Release 1) Changes from AT&T Labs' Version 3.3.3 Revision 10: Delphi apps should no longer crash when run alongside VNC. WinVNC nows gives a slightly more useful error message if -install is used while the service is already registered, The logging-related buffer overflow exploits should no longer be possible. Added several options to the Properties dialog. The current password is not stored in the Properties dialog when displayed, preventing it from being read by other programs. The HTTP server can be disabled by the HTTPConnect registry key. LockSettings can now lock Windows 2000/XP boxes on disconnect. Improved update tracking code. Fixed LF/CRLF problem in HTTP server. Clients are no longer disconnected if pixel format changes. They WILL be disconnected if the display size changes. Update hooking and transmission now decoupled. Optimised checking of update regions for changes for case where clients are connected which do not request updates (often). Optimised for multiple simultaneous client connections. Upgraded omnithread library. Rationalised source tree a little. Renamed "log" to "vnclog" to avoid log() function clashes. Version 3.3.3 (VNC Version 3.3.3, revision 10) Changes from Version 3.3.3 Revision 9: Fixed signature of RegisterServiceProcess. Fixed incorrect call of errno to call wsagetlasterror. Fixed keymapping of circumflex character, etc. Added extra debug logging in desktop hook code. Removed warning about connected users in logoff handling code. Version 3.3.3 (VNC Version 3.3.3, revision 9) Changes from Version 3.3.3 Revision 8: Fixed handling of empty (match all) AuthHosts filters. WinVNC.log will now be moved to WinVNC.log.bak when WinVNC runs. Version 3.3.3 (VNC Version 3.3.3, revision 8) Changes from Version 3.3.3 Revision 7: -=- Bug Fixes to WinVNC: Fixed clipboard handling. Fixed AddClient semantics in vncServer to avoid a socket leak. Fixed AuthHosts dialog display. Now flashes titlebar/tray button if not foreground window. Fixed AuthHosts string parsing. Filters such as 10.0.0.1 no longer match 10.0.0.10. QuerySetting didn't work correctly if the AuthHosts string was empty. Fixed. Closing the screen-saver now works, so it's back in there. Changed the shutdown-dialog behaviour. It now only operates in application mode. -=- Bug Fixes to VNCHooks: Added HooksType() function to VNChooks so that the library may be replaced with a reliable hooking version easily. VNCHooks DLL did not remove properties from windows correctly when UnsetHooks() was called. Fixed. -=- Minor Fixes Implemented the wallpaper-culling feature during remote connections. Added automatic culling of "idle" connections, if required, via the IdleTimeout setting. An idle connection is one in which the client has sent no data for a fixed period, whether the data be an update request, input events, or clipboard data. Only incoming connections are now checked for validity. Outgoing (Add New Client) or CORBA-initiated connections are not checked via AuthHosts. Version 3.3.3 (VNC Version 3.3.3, revision 7) Changes from Version 3.3.3 Revision 6: WinVNC did not correctly handle Winsock1.1, causing all client connections to be erroneously dropped by the anti-DoS code. Now fixed. Version 3.3.3 (VNC Version 3.3.3, revision 6) Changes from Version 3.3.3 Revision 4: The anti denial-of-service blacklist code was very buggy. It's now fixed. An serious potential deadlock condition in the negotiation phase of new clients has been fixed. The problem was incredibly rare on uniprocessors but much more noticable on multiprocessors, unsurprisingly. Pointer is now rendered slightly better. Version 3.3.3 (VNC Version 3.3.3, revision 4) Changes from Version 3.3.3 Revision 3: Implemented some simple Denial-of-Service protection. After five consecutive failed connection attempts from a client, that client is "blacklisted" for ten seconds. In addition, connections which hang before the authentication stage has completed are timed out after thirty seconds, to prevent malicious users gradually eating up socket resources. Corrected a bug initialising the back-buffer. Added hooking for dialog boxes, menus and scrollbars. Seems to fix some dialogs but not many scrollbars or menus.. Improved the GetChangedRect code with some alignment patches suggested by Will Dean. Fixed an *IDIOTIC* bug in the handling of user-specific settings. They were completely broken before. Now they should work. I'm such an idiot. Idiot idiot idiot. See MS Knowledge Base articles Q168877 & Q199190. The idiot bug-fix above broke roaming profiles on NT domains! That's now fixed, too. Idiot idiot idiot. Added a dialog to query whether to accept or reject incoming connections. The dialog is currently controlled ONLY via the registry! The AuthHosts setting is now extended, while some new user-specific settings are provided so that users can tailor the query feature. Relevant keys are: - QuerySetting (DWORD) (local&global user-specific) [Least secure] 0 - Accept or Query. If AuthHosts says Reject then query, otherwise Accept. 1 - Accept or Reject. Reject if AuthHosts says so, otherwise Accept. 2 - Obey AuthHosts. Obey AuthHosts Accept, Query, Reject settings. [Default!] 3 - Query or Reject. If AuthHosts says Reject then Reject, otherwise Query. 4 - Ultimate Paranoia. If AuthHosts says Accept then Query, otherwise Reject! [Most secure] Summary: Actual Effect Setting Accept Query Reject 0 a a q 1 a a r 2 a q r 3 q q r 4 q r r - QueryTimeout (DWORD) (local&global user-specific) Number of seconds before Accept/Reject dialog should timeout and reject. - AuthHosts (SZ) (machine-local) Match terms may now start with "-", "+" or "?". "?" indicates that the connection attempt should be queried. Version 3.3.3 (VNC Version 3.3.3, revision 3) Changes from Version 3.3.3 Revision 2: Implemented Will Dean's DIBsection patch to retrive screen data. This reduces both the retrieval time & the memory usage of WinVNC but currently only works for VNC-format-compatible 16 and 32 bit displays. If your display is incompatible then WinVNC falls back to the old, slow, memory hungry mode. Fixed a bug in VNCHooks which cause very large updates to be spuriously created on occasion. vncKeymap now filters out the three Lock keys (CapsLock, NumLock, ScrollLock), so that they can be safely used at the client side without generating random keystrokes on the server. Version 3.3.3 (VNC Version 3.3.3, revision 2) Changes from Version 3.3.3 Revision 1: Added the new "Disable Local Keyboard & Pointer" option to the Properties dialog. This features currently allows the keyboard & pointer of the sever machine to be disabled while a remote connection is in progress. The feature only works under Windows NT at present. NB:This is a BETA feature, with a known limitation - if the setting is changed then all clients must disconnect and reconnect to achieve the desired effect. The -connect command-line option has been added, allowing new outgoing connections to be made using a script or an icon. The Add New Client and -connect options now make shared outgoing connections, since this is usually preferable to unshared outgoing connections. Improved the way preferences are loaded, reducing the number of times the client will be disconnected when settings are loaded & saved. Version 3.3.3 (VNC Version 3.3.3, revision 1) Release version, patched for HTML bug below. [The initial 3.3.3 release featured a bug in the rendering of HTML for the Java-based viewer. 3.3.3 was quickly withdrawn and 3.3.3R1 is now the base Version 3.3.3 release.] -=- NEW FEATURES: REGISTRY SETTINGS ARE NOW LOADED CORRECTLY FROM THE CURRENT_USER REGISTRY HIVE! When running as a service under Windows NT, WinVNC was unable to correctly load settings stored in the current user's HKEY_CURRENT_USER hive. As a workaround for this, a special helper-hook is installed when the service itself is installed. The helper-hook runs when a user logs in and passes enough information to the WinVNC service for it to locate their preferences correctly. If the helper hook fails to install or isn't run for some reason, then WinVNC will continue to operate based on ALL the WinVNC HKEY_LOCAL_MACHINE settings. A new command-line option, -defaultsettings, has been added, which will cause the running WinVNC server to show a Default Properties dialog, through which the default local properties can be editted. (While the dialog is displayed, the properties used will be the default ones. When it dissappears, WinVNC reverts to the user's settings.) Nagle's algorithm is now disabled on all WinVNC connections, decreasing latency considerably. Timestamp information is now added in the debug log output. Limited client IP-address based filtering of connections is now supported. The new Machine-Local registry setting "AuthHosts" may be specified, and should be of type "string". Match terms look like: + - where ip-address-template is the leftmost bytes of the stringified IP-address, e.g. 158.97 would match both 158.97.54.1 and 158.97.128.6, for example. Multiple Match terms may be specified, delimited by the ':' character. Match terms later in the list take precedence over earlier ones. e.g. -:+158.97: [This scheme does not currently filter by DNS name] In addition to the above, incoming connections may be restricted on a server-wide basis to being accepted only on the local-loopback interface. This is controlled through the LoopbackOnly registry setting, which overrides the AllowLoopback and AuthHosts settings when active. The WinVNC priority is now increased while processing its message queue and put back to normal while preparing updates for sending. This results in apparent increase in performance, particularly when used in conjunction with some common applications. The machine's name is now included in the title of the web page used to access the Java version of the VNC client. -=- BUG FIXES: - Major: Under Windows NT, a handle was leaked whenever the SelectDesktop function was called to move a thread into a different desktop. In practice, this meant a leak everytime someone logged in, connected remotely, or used C-A-D to access security features in NT. Not pretty. Related to the above fix: When simulating Ctrl-Alt-Del, WinVNC would switch a dedicated thread into the WinLogon desktop to achieve the desired effect. When the thread quit, the handle to the WinLogon desktop was not properly freed by WinNT. This is now worked around by WinVNC internally. When killing the vncServer object, a race condition occurred because WaitUntilAuthEmpty() was used to wait for ALL clients being removed - potentially, there could have been active, unauthorised clients connected to the vncServer object, which would crash if the server object was deleted before they had quit. A new function, WaitUntilUnauthEmpty, is now used as well as WaitUntilAuthEmpty, to remove this race condition. - Minor: The LockSetting option was not correctly loaded by the Properties class in some common cases. This is now fixed. WinVNC was using ExitWindows but specifying parameters according to the specification of ExitWindowsEx. ExitWindowsEx is now used instead. -=- OTHER MODIFICATIONS: When starting up without a password set, WinVNC will first check whether the Properties dialog has been disabled with AllowProperties=0 before attempting to open it for the user to set one. Instead a dialog indicating the problem will be displayed. -=- NOTES: BUGLET:PLANAR vs CHUNKY. It transpires that problems encountered with WinVNC and 16-colour Windows 95 displays are due to Win95 VGA drivers giving a "planar" view of the world. Internally, Win95 is very bad at handling planar pixels and is also very bad at making them chunky. WinNT does not have this problem. A new error dialog has been added to warn about this problem on Win95. Version 3.3.2 (VNC Version 3.3.2, revision 8) Changes from revision 7: Fix in VNCHooks.cpp (part of the WinVNC hooks library) to place the hook handles in a shared segment of DLL memory, so that they are correctly accessed by the hook code itself. Fix in vncKeymap.cpp which should sort out the CapsLock on connect problem. Added an Initiate Outgoing Connection (Add New Client) dialog. If a machine is running a vncviewer with the -listen option then WinVNC can be made to export the display it is managing to this listening viewer. NOTE : Outgoing connections are treated as 'non-shared'. NOTES ON BUILDING UNDER VC6: For compatibility reasons, WinVNC will remain a VC5 distribution for the moment. However, some problems arise when compiling WinVNC under VC6. - vncControl.idl is not supplied in the distribution and is ONLY USED INTERNALLY at the AT&T Labs Cambridge. It is disabled in the VC5 version of the project but conversion to VC6 format re-enables it. Solution : remove vncControl.idl from the project once it is imported into Visual C++ 6, before compilation. Fixed minor bug in Log.cpp code relating to invalid handles being returned by file open call Version 3.3.2 (VNC Version 3.3.2, revision 7) Changes from revision 6: Fixed HANDLE to HINSTANCE casting problem in VNCHooks.cpp, which prevented WinVNC from compiling under Microsoft Visual C++ 6.0 Tray icon is now refreshed every five seconds. This may help detect dynamically added IP addresses correctly Every five seconds, WinVNC will re-attempt to add the tray icon, even under Win95. If Explorer crashes or Windows 95 is being run then this should ensure the icon appears. Version 3.3.2 (VNC Version 3.3.2, revision 6) Changes from revision 5: Fixed minor protocol non-compliance bug with regard to clients which fail to send SetPixelFormat messages. Fixed DOS-prompt polling under Windows 95. DOS boxes are now polled correctly. Version 3.3.2 (VNC Version 3.3.2, revision 5) Changes from revision 4: Prepared WinVNC for release. Fixed AuthRequired race condition. Fixed AutoPortSelect bug. Version 3.3.2 (VNC Version 3.3.2, revision 4) Changes from revision 3: Fixed a tray icon bug, in which the tray icon was being produced before the menu had been loaded. Replaced the thread package with the latest version, which fixes a few resource leaks. Mouse events are now produced to reflect those sent on the wire, regardless of whether the mouse buttons would locally be swapped by the OS. This means that left- or right- handedness is a client-side feature. Version 3.3.2 (VNC Version 3.3.2, revision 3) Changes from revision 2: SETTINGS REORGANIZED! The WinVNC registry settings have now been reorganized and improved to allow better control over individual user's capabilities when running it, whether as an application or as a service. Local machine settings are stored under HKEY_LOCAL_MACHINE/Software/ORL/WinVNC3 Local per user settings are stored under HKEY_LOCAL_MACHINE/Software/ORL/WinVNC3/ Local default user settings are stored under HKEY_LOCAL_MACHINE/Software/ORL/WinVNC3/Default Local no-user settings are stored under HKEY_LOCAL_MACHINE/Software/ORL/WinVNC3/SYSTEM Global per user settings are stored under HKEY_CURRENT_USER/Software/ORL/WinVNC3 These groups of settings have the following priority: 1. Machine settings are always read, from the machine settings location. Not overridable. 2. Default user settings are read. 3. Local-machine, per-user settings are read for the current user, or for SYSTEM if there is no current user. These override the Default settings. 4. If AllowProperties is not zero, the global per-user settings are read. These override both the Default settings & the local-machine, per-user settings. - Local Only, Machine Settings : DebugMode, DebugLevel, AllowLoopback, AuthRequired, ConnectPriority. - Local Only, Per User Settings : AllowShutdown, AllowProperties. - Local/Global, Per User Settings : SocketConnect, AutoPortSelect, PortNumber, Password, CORBAConnect, InputsEnabled, LockSetting, PollUnderCursor, PollForeground, PollFullScreen, OnlyPollConsole, OnlyPollOnEvent UPDATE ROUTINES FIXED! If a client chose to send multiple update requests to the server without waiting for the update data, then the server would only consider the last request. This behaviour was incorrect and has now been fixed. As a result, WinVNC will now work properly with the PalmVNC viewer. HTTP SERVER FIXED! The HTTP server section of WinVNC could end up listening on the wrong port number when automatic display number selection was in use. This is now fixed. MEMORY LEAK FIXED! A small memory leak in the WinNT side of the vncService::CurrentUser function has been fixed. Although the amount lost on each execution was small, the function is called often enough for this to cause problems over long periods of use. Established that the Ctrl-Alt-Del problem under NT 3.51 is because GetAsyncKeyState for ctrl and alt ALWAYS returns zero. Don't know why... Fixed a potential lockup when the Properties dialog is closed by the OS rather than by the Ok or Cancel buttons. Version 3.3.2 (VNC Version 3.3.2, revision 2) Changes from revision 1: CTRL-ALT-DEL IMPROVED! Ctrl-Alt-Del will now work both with the Delete key and with the keypad Del key, from Unix clients. Unix clients treat these two keys differently but Windows doesn't, so WinVNC now maps both on to VK_DELETE internally. MENU UPDATES IMPROVED! Extra hook code has been added to the VNCHooks library to catch the messages used to update the contents of pop-up menus, etc. As a result, menus tend to suffer much less from the characteristic colour-smear effect. Code is now in place to perform automatic locking or logoff of the workstation when all remote clients have closed, for security reasons. Unfortunately, the LockWorkstation function doesn't work on pre-NT5 machines, so only the logoff functionality is implemented. The new ConnectPriority option is available, on a per-machine basis. The HKEY_LOCAL_MACHINE/Software/ORL/WinVNC3/ConnectPriority setting can take one of three values: 0 - new, non-shared incoming connections kick off existing ones. 1 - all incoming connections are treated as shared, regardless of the -shared viewer option. 2 - new, non-shared incoming connections will be refused if a current connection exists. Automatic display number selection is now available. This option is set through the WinVNC properties dialog. When this option is used, the display number parameter in the dialog is ignored and the display number to use is instead allocated on the fly by WinVNC. Version 3.3.2 (VNC Version 3.3.2, revision 1) Changes from base 3.3.2 release: PALETTE-BASED CLIENTS SUPPORTED! Clients which request 8-bit palette-based data are now supported by WinVNC. Palette-based clients will get the best results from 8-bit palette mode servers, due to the way in which truecolour is culled into 8-bit palettes. svncviewer will now work with 8-bit WinVNC desktops as well as Xvnc ones. LOGGING SUPPORTED! Run-time logging of all internal debug messages is now supported. Log data may be output to a file or a console window (or the MSVC debugger if the program was compiled with debugging active.) Two registry keys under HKEY_LOCAL_MACHINE/Software/ORL/WinVNC3 are used: DebugMode indicates which logging methods to use. [1 = MSVC debugger] 2 = Output to log file Winvnc.log in the WinVNC directory 4 = Output to a console window, displayed on-screen Any combination of the above values may be used. DebugLevel indicates how much debug information to present. Any positive integer is valid. Zero indicates that no debugging information should be produced and is the default. Loopback (local-machine) connections to WinVNC will now be allowed if the HKEY_LOCAL_MACHINE/Software/ORL/WinVNC3/AllowLoopback registry entry is set to 1. The default is 0. Connections may now be made to WinVNC servers without requiring authentication if the HKEY_LOCAL_MACHINE/Software/ORL/WinVNC3/AuthRequired registry entry is set to 0. The default is 1. Microsoft Developer Studio configurations are included (but not tested) for Alpha NT, to make compilations for this platform more straightforward. CopyRect is now handled differently and tends to give better results when windows are dragged around the screen. All notifications of potential updates to the screen are cached into a vncRegion object in the vncDesktop thread and are only flushed to clients immediately before TriggerUpdate is called, to improve performance. Added a delay when the -kill option is used, to give the running copy time to quit. Fixed a CopyRect-related bug which caused windows to scroll oddly when dragged partially off the left or top of the screen. Version 3.3.2 (VNC Version 3.3.2) Release version. Version 3.3.1 (VNC Version 3.3, revision 20a) Changes from revision 19: WinVNC now returns explanatory message text to the viewer when an incoming connection is refused because of an empty Password field or a local-loopback connection. Mouse movements are now pre-processed by the Desktop handler and only passed to the Client handlers immediately before an update is triggered, resulting in less overhead and therefore lower latency. If a client requests the CopyRect encoding in the list of encodings it supports then WinVNC will now use the CopyRect primitive when doing simple tasks like dragging windows. This still has some flaws in it but generally improves performance. Updated the Java classes exported by WinVNC to include the Send-Ctrl-Alt-Del button. Added a "-about" option, which will cause an _already running_ copy of WinVNC to display its About box, making it easier to check that you have the latest version! Added version information to the VNCHooks Dynamic Link Library. This can be viewed selecting the properties dialog for the vnchooks.dll file. Version 3.3.1 (VNC Version 3.3, revision 19) Changes from revision 17: A bug in the new region culling routine was fixed. Version 3.3.1 (VNC Version 3.3, revision 17) Changes from revision 16: WIN-NT & WIN-95: MS-DOS applications can now by typed into! Thanks to Gur Stavi for pointing out that WinVNC didn't previously generate keyboard scancodes for key events. This means that the COMMAND.COM and EDIT programs, for example, may now be used through VNC. Lookup-table based colour translations are now incorporated into WinVNC. This means an increase in memory usage but delivers a noticable performance boost on most screen formats. 1, 4 and 8 bit palette-based local displays are now handled directly by WinVNC, resulting in a significant performance boost, although there are currently problems with the palette layout being confused in places. More intelligent culling of unchanged regions of the screen from the list of rectangles to be sent has been implemented. Generally, this isn't noticable but over low-bandwidth links, it should have a significant effect. WM_ENDSESSION is handled properly for full system shutdown. WM_DISPLAYCHANGE is now handled, so that when the display resolution changes, all remote VNC users are disconnected, to prevent corrupt display updates. The mouse cursor rendered to VNC clients is now correct most of the time. When installing WinVNC as a service, quotes are now placed around the executable's name, to avoid problems if there are whitespace characters in the path. (Common because of installing to "program files\orl\vnc") The command-line options available have changed slightly: -run Causes WinVNC to run normally & ignore rest of command-line. -install Installs the WinVNC service and continues reading the command-line. -remove Removes the WinVNC service and continues reading the command-line. -settings Tells a running copy of WinVNC to show its Properties box. -kill Kills a running copy of WinVNC. If no options are given then WinVNC runs normally. Multiple option may be given, so, for example, to upgrade from a running copy if WinVNC to a new one, you could use: WinVNC_new -remove -install which will stop & remove the old copy & install the new one, or WinVNC_new -kill -run which will stop the running copy & run the new version normally. The Java viewer class files have been updated. The new classes are slightly more compatible with borderline Java VMs. Deferred update messages are no longer removed from the application's message queue behind it's back, hopefully resulting in more reliable behaviour & fewer lock-ups. The screen-saver is now not disabled when WinVNC is running in service mode and a connection is made, to avoid a potential race condition. This will be handled better in a future revision. WIN-NT ONLY: When running as a system service, WinVNC no longer disconnects all remote VNC connections whenever the current desktop changes. Corrected some problems with shift-key release code confusing Windows NT. WIN-95 ONLY: WM_USERCHANGED is handled, so that when no user is logged in, the machine-local password is used, otherwise the user's own VNC password and settings are used. (This assumes that Windows 95 is set to Multiple User Profile mode) Under Windows 95, WinVNC running in service mode no longer crashes when told to stop by the -kill or -remove options. The main text area of the Windows 95 console will now be polled by WinVNC properly when the Poll Console Windows Only option is set. Version 3.3.1 (VNC Version 3.3, revision 16) Changes from revision 15: The Revision 15 build was broken due to file timestamp corruption. Revision 16 is a complete re-build. Version 3.3.1 (VNC Version 3.3, revision 15) Changes from revision 13: WIN-NT & WIN-95: WinVNC will now run as a service on both Windows NT and Windows 95. Running WinVNC with the -install command-line option will install it into the system service control manager and set it to auto-run on bootup. The -remove option will stop the service if necessary and will then remove it. WIN-95 : winvnc -install will cause the service to run immediately. WIN-NT : winvnc -install will install the service into the manager but not start it. To allow the per-machine settings for WinVNC to be changed even when WinVNC is running as a service, the "-settings" option will cause the service to pop-up the properties dialog. A bug which often caused the entire screen to be transmitted twice to a connecting client is now fixed. The general Shift, Alt and Control-related bugs, affecting non-UK/US keyboard layouts in particular, are now corrected, with one important exception, mentioned in the NOTES section below. WIN-NT ONLY: Ctrl-Alt-Del can be simulated by WinVNC if a client sends it, allowing users to log on and off and to lock the workstation remotely. WIN-95 ONLY: Shift, Alt and Control were broken in Revision 13, since Windows 95 cannot distinguish left and right shift keys at all. This is now fixed. NOTES: When typing into an application set to use keyboard layout A, using WinVNC run with keyboard layout B, problems may be experienced because of WinVNC setting the wrong Shift key states to generate particular characters. As long as only one keyboard layout is used consistently across all applications, this shouldn't be a problem. Version 3.3.1 (VNC Version 3.3, revision 13) Changes from revision 12: The Caps-Lock, Num-Lock and Scroll-Lock keys are now correctly disabled whenever a new client connects, if that client has keyboard input enabled. Left and right versions of the Shift, Alt and Control keys can now be distinguished. The right and middle mouse buttons can now be set to trigger updates, although by default these options are not used. Version 3.3.1 (VNC Version 3.3, revision 12) Changes from revision 10: It is now no longer possible to accept unauthenticated incoming connections. If WinVNC fails to access the local root window then any remote connection will be refused. Version 3.3.1 (VNC Version 3.3, revision 10) Changes from revision 9: Black-background initial update bug is now fixed. Border redrawing bug is now fixed. Version 3.3.1 (VNC Version 3.3, revision 9) Changes from revision 8: Local connections to WinVNC servers are now filtered out. The OMNIthread package is now included as part of the WinVNC source distribution. The VTypes header file is now included in the WinVNC source distribution. WM_NCPAINT messages are hooked, resulting in better updates of window borders. Version 3.3.1 (VNC Version 3.3, revision 8) Changes from revision 5: The resource leak while rendering the mouse pointer has been fixed. The WinVNC tray icon changes colour when there is a remote connection. An Apply button has been added to the Properties dialog so that it can be used as the main WinVNC window on Windows NT 3.51 (or any other system without a system tray.) The Non-CORBA installer now generates an uninstall option properly. WinVNC may now be run in a view-only mode, in which remote users have no control. Version 3.3.1 (VNC Version 3.3, revision 5) Changes from revision 4: The machine name is now converted to lowercase to get the desktop name. The CORBA control object is properly removed from the Naming Service on exit. Version 3.3.1 (VNC Version 3.3, revision 4) Changes from revision 1: WinVNC now warns if no password has been set for the current user. Version 3.3.1 (VNC Version 3.3, revision 1) Changes from version 3.05: WinVNC now listens on a socket for incoming HTTP connections and produces HTML accordingly. This allows the server to be connected to from any web browser that supports Java, without any plug-ins or other software having to be installed on the client system. The server now copes gracefully with the absence of a valid CORBA setup and warns the user. Any previous, running instance of WinVNC is detected, to prevent further instances from running. The new, DES-based authentication scheme is used. This results in incompatibility with VNC clients using version 3.2 or lower of the protocol. To avoid this problem, connect via the HTTP interface, which provides the correct version of the Java viewer. Version 3.3+ based clients will handle the new scheme correctly. Shared VNC client connections are now fully supported. James "Wez" Weatherall 7 November 1997