Windows Server 2008: Terminal Services RemoteApps

Today's topic is Terminal Services RemoteApps, a new feature in Windows Server 2008.  RemoteApps are programs accessed remotely through Terminal Services, and appear as though they are running locally on the user's machine.  RemoteApps are seamlessly integrated with the client desktop, running in their own (resizable) window with their own taskbar entry.  Users can run […]

Today's topic is Terminal Services RemoteApps, a new feature in Windows Server 2008.  RemoteApps are programs accessed remotely through Terminal Services, and appear as though they are running locally on the user's machine.  RemoteApps are seamlessly integrated with the client desktop, running in their own (resizable) window with their own taskbar entry.  Users can run RemoteApp programs alongside their local programs.  If a user is running multiple RemoteApp programs on the same Terminal Server, the RemoteApp programs share the same Terminal Services session.

OK - so what programs can be run as RemoteApps?  Basically, any program that can run in a Terminal Services session or in a Remote Desktop session should be able to run as a Remote Application.  The Remote Application feature is available to all platforms that support the new RDC 6.x client.  There are different ways that a user can access a RemoteApp program - depending on how the program was deployed:

  • via a link to the program on a web site by using the improved Terminal Services Web Access features in Windows Server 2008
  • via a custom .RDP file that is created and deployed to users.  The RemoteApp is started when the user double-clicks the file
  • via a Windows Installer (.MSI) package that can be deployed to users and will create a program icon on the Desktop or Start Menu
  • via a Windows Installer (.MSI) package that can be deployed to users and will associate a specific file extension with a RemoteApp program

The .RDP file and .MSI package contain the settings needed to connect to a Windows Server 2008 Terminal Server and run the RemoteApp program.  After opening a RemoteApp program on their local system, the user can interact with the program as if it were installed and running locally.  Icons that are associated with the Remote Application that would normally appear in the notification area of a user's Terminal Server session will appear in the notification area on the local system when a remote application session is active.  For example - if you were using Microsoft Outlook as a Remote Application, new mail notifications and other pop-ups and application notifications would appear in the notification area as you would expect them to if the application were installed and running locally.  If a user's Terminal Server login script starts an application that implements a System Tray icon, that icon will also be remoted to the Local System Tray.  However, applications that run via the Run or RunOnce registry keys or the Startup folder are not remoted.

Now let's quickly go over the architecture of RemoteApp programs.  There are two executables in particular to be aware of:

  • RDPINIT.EXE
  • RDPSHELL.EXE

An instance of RDPINIT.EXE runs on the Terminal Server for each users RemoteApp session.  RDPINIT.EXE is loaded by USERINIT.EXE as a RemoteApp specific implementation of USERINIT.EXE.  RDPINIT.EXE acts as a watchdog to launch RDPSHELL.EXE and monitor process startup and shutdown.  RDPSHELL.EXE is the shell that is used instead of EXPLORER.EXE to provide RemoteApp functionality.  RDPINIT.EXE monitors the process lifecycle of RDPSHELL.EXE and restarts it in the event that it abnormally terminates.  RDPSHELL.EXE loads a set of Windows event hooks onto each user desktop in the session.  These event hooks allow RDPSHELL.EXE to monitor the state of all windows on the desktop.  The interaction between these components is shown below:

Full Article

Microsoft, WS2008, Windows Server 2008, Terminal Server, Terminal Services, Remote Application, Architecture, Knowledgebase