14.2.7 Remote Desktop Protocol: Remote Programs Virtual Channel Extension
Remote Desktop Protocol: Remote Programs Virtual Channel, also known as RemoteApps or Remote Applications Integrated Locally (RAIL), is an RDP 6.0 feature that presents a remote application running remotely on a RAIL server as a local user application running on the RAIL client machine. RAIL extends the core RDP protocol to deliver this seamless Microsoft Windows® experience. Support for RAIL is optional in RDP, and it is negotiated as part of the capability negotiation process.
Microsoft Remote Applications are programs that are accessed remotely through Terminal Services and appear as if they are running on the end user's local computer. Instead of being presented to the user in the desktop of the remote Terminal Server, the RemoteApp program is integrated with the client's desktop, running in its own resizable window with its own entry in the taskbar. The user can run RemoteApp programs side-by-side with local programs. If a user is running more than one RemoteApp program on the same Terminal Server, the RemoteApp programs share the same Terminal Services session.
The RAIL client, running on the user's local machine, creates one local window or notification icon for every window or notification icon running on the RAIL server. These local windows/icons, called RAIL windows/icons, exactly mimic the appearance of their corresponding remote windows/icons, which are created by RAs running on the RAIL server. All local user input to the RAIL windows/icons is captured by the RAIL client and redirected to the server. All display updates to the remote windows/icons on the RAIL server are captured by the server and redirected to the client.
RAIL relies on the core RDP protocol for basic connection establishment, connection security, local input redirection to server, and drawing-order updates from server to client (as specified in the Remote Desktop Protocol: Basic Connectivity and Graphics Remoting Specification [MS-RDPBCGR]). In addition, RAIL adds the following extensions to the RDP protocol:
Extensions to send drawing orders from the server to the client that describe individual windows and notification icons. This enables the RAIL client to mimic the geometry of the drawing orders in RAIL windows/icons.
Virtual channel messages from client to server that contain client information, system-parameters information, and RAIL-specific commands, such as remote program launch.
Virtual channel updates from server to client containing responses to client messages, server system parameters information, or information regarding other RAIL-specific features such as local move/resize.
Certain classes of user input are not directly received by the RAIL window/icon as keyboard or mouse input. Examples include right-clicks on the window's taskbar icon; key combinations to minimize, maximize, or restore all windows; and all user interactions with notification icons. These interactions are posted to the RAIL window/icon as nonkeyboard or nonmouse messages; hence, they cannot be sent over the core RDP channel. The client sends these interactions to the server as RAIL Virtual Channel messages.