current version 184.108.40.206
How does it work?
Assuming we have downloaded the remote desktop access server with settings for domain name rdsrv.org and port number 1234. The default name is rdsrv.org_1234.exe. Note, the changing of this name can't make it to work properly on computer with different IP. The filename is a reminder about parameters that you was using at compilation.
The executive file of the remote desktop access server contains (inside self, as resources) remote client and connection manager. They in return contain other modules that are needed for work.
The executive file of the remote desktop access server is running on computer with "real" IP address in Windows service mode or regular application mode, and listening to the given port over TCP/IP. All further communications with the server will use that port, for browsers, as well as for clients. Folder, where is running the remote desktop access server, must have write access for the process. There is created settings file.
Remote desktop connects to the server from browser by HTTP (in our case http://rdsrv.org:1234). The server unpacks and returns the execution module of remote client (stored in server module as resource). Remote user needs to permit downloading and running it from browser. At startup the client creates its copy "rdloader.exe" in user folder "My documents/Documents" on the remote desktop. You can use it in future for fast connection without starting browser and typing url.
Next, the remote client connects to the remote desktop access server to same port but is recognized by the server and stored as different object. Some base information about computer is requested from remote client and connection is moved to waiting mode. The list of such connections is serviced by the remote desktop access server. Each of those is periodically tested for avoiding disconnection by timeout.
In order to access to the list of remote computers, admin needs to type same url in browser but with suffix "lman" (http://rdsrv.org:1234/lman). In answer the remote desktop access server returns execution module of connection manager. It, after running, connects to the server and requests password (default 123456). The password is encrypted and transferred. If it was wrong, no error is issued, only empty window is displayed. On success the list of remote clients and information about them are displayed in window. Besides, there is used next shortening in column "User". If remote user has admin rights on remote desktop, "+" is added before user name. If UAC is enabled and remote user consists in admin group, "-" as added before of user name (since Windows Vista). Some set of actions can be executed with remote clients from the connection manager by using right mouse button.
The double click on remote computer in the list forces the connection manager to unpack and run (in separate process) the control client. It gets GUID of selected remote computer (GUID is created by remote client at its startup). The control client connects to the server and through it to the remote desktop. Now you can see remote desktop and control it. Any quantity of remote clients can be opened at the same time. The window of connection manager can be closed now. It will have no effect on control client connection. Several connection managers also can run simultaneously. And it can be done on different computers.
Remote desktop user is informed about connection state. If his computer is connected to the remote desktop access server as remote desktop client, blue asterisk appears in notification area of taskbar. If somebody is observing his desktop, green asterisk appears.
Remote desktop commands are called by pressing buttons on toolbar. Buttons have popup tips with explanation of commands. There is no specialized help. Smaller size of control client window reduces network traffic because picture is processed on remote client side. Minimizing this window prevents transferring picture and traffic falls almost to zero.
No extra libraries or Windows components are needed.
Copyright (C) Sergey Kuzmin firstname.lastname@example.org